关于unity3D中动画的一些使用和问题

首先先说一下unity中我已知的三种动画操作方式(分别是Animator Animation Override  AnimatorOverrideController)

第一种:Animator

 Animaor 是一种通过控制动画切换条件来达到动画之间的过度的

有以下四种条件控制 分别是一个float (小数)  int(整数)bool(真或假) Trigger(触发)

里面还有一个子状态机的操作,相当于是导航的的层级可以进行比较复杂的动画控制

整数小数可以用来控制切换不同状态,boo一般用来控制两个动画之间的切换 ,Trigger可以用来处理受击动画等(就像触发开始的那个函数)

使用方法 获取到人物身上的Animator组件

        animator.SetBool("动画名称", true);
        animator.SetInteger("动画名称", 0);
        animator.SetFloat("动画名称", 1.0f);
        animator.SetTrigger("动画名称");

当然这个东西也是满足你要切换的条件后再去调用

第二种:Animation

1.这个东西一般都是成品不会我们来绘制,但是我们也是可以用它来录制一些简单的动画的,就像上面一样,每一个点对任务骨骼或者位移旋转的做出改变。

2.还可以选中一组场景中的图片用Ctrl+6来处理其成为帧动画

3.接下来就是对他的使用了,在人物身上添加Animation组件来控制AnimationClip进行操作

他的操作很简单一个方法 animation.Play();播放动画  animation.Stop();停止播放

这样就拖上去,就可以来通过名字找到动画然后播放了

第三种 :AnimatorOverrideController 
       这个东西吧,你看这个名字 Override 是不是很熟悉 ,没错就是覆盖,他是一个通过控制别的动画状态机来进行播放动画的,可以将他当成提线木偶中哪个提线的人,或者是代码中的管理类,

他可以这样来创建,也可以通过代码 

 AnimatorOverrideController aoc = new AnimatorOverrideController();

当然虽然他可以创建很多,但是不需要那么多,一个就够了

首先需要一个 AnimatorOverrideController 可以是代码创建的,也可以是资源中的

然后需要一个AnimatorController 来然他

接下来

public void SetAniation(AnimationClip clip)
    {
        RuntimeAnimatorController runtimeAnimator = Resources.Load<RuntimeAnimatorController>("anim");
        overRideCtrl.runtimeAnimatorController = runtimeAnimator;
        Animator animator = player.GetComponent<Animator>();
        animator.runtimeAnimatorController = overRideCtrl;
        overRideCtrl["idle0"] = clip;
        animator.Play("idle0");
    }

 这个例子是用clip这个动画片段去替换了原动画控制器中的idle0这个动画,然后你再去播放idle0的时候,他播放的就是新的动画啦,当然,他也是可以和animator中的控制条件配合使用的,比如你之前动画状态机中拥有一个待机动画和跑步动画,他们之间用一个bool值来控制  你默认的是待机动画,之后你用overrideCtrl八两个动画都改变了,那么你的boo再去切换的话,就是两个新的动画之间的切换

最后是这次遇到的问题在使用Animation 和 动画覆盖器的时候,用到人物身上的动画,他出现了找不到动画的情况,《'player_1(Clone)' AnimationEvent has no function name specified!》由于动画上添加的帧事件,但是并没有绑定,导致他找不到该动画。解决方案有二  1.删除该动画上的所有关键帧 2.为该动画的关键帧进行一个绑定

那么好,这个问题解决后,还是不能显示,但是他不会给我们报错了可以去尝试改变一个这个地方

 点击Debug,将Legacy这个属性勾选上

但是这个动画属性改掉以后,该动画不能拖到TimeLine中了

 到这我这次的问题解决掉了。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值