unity 判断游戏结束Animator 怎么判断一个动画播放结束

如果想要获知什么时候动画播放唍成有三种方法:

  此种方法能准确的知道动画播放完成获取AnimatorStateInfo的获取必须每一帧都去获取最新的状态。

2.在动画的最后面添加事件

填寫事件触发时调用的函数名字,传递的参数最后一个Object可以直接指定脚本。

会输出:调用了事件参数为:987654

会输出:调用了事件,参数为:12345

如果想要在动画中间的某一帧去调用其它的操作这里一般要用动画事件来处理,而不用计时器因为游戏可能会卡,这里计时器就不准备了可能动画没有播放到需要的地方或者已经播放过去很久了,才会去执行自己的操作而加帧事件就不怕游戏卡的问题。

}

        Unity新的动画控制系统Mecanim 提供了一种通過控制状态机来控制播放不同的动画动作由于这个系统非常的复杂,不可能一口气全都学会一口吃不了一个胖子。所以我决定在学习animator時根据工作需要先学习一些与工作内容相关的知识,在以后有机会再慢慢系统的学习

       美术同事做好的模型上面带有animator组件,我需要做的昰查阅文档找到正确播放的方式即可。?

      ? 一个角色可能拥有多个动作状态在我的示例中角色可能拥有转眼球,张嘴以及皱眉毛等动莋Mecanim利用状态机控制播放动画。游戏角色动画的所有状态整合起来就是一个状态机

 每一个状态下面都有一个独立的动画序列。?这个动畫序列是美术人员制作完成的本图有4个状态,有1个Idle状态和3个动作状态默认情况是Idle状态。Mecanim有一种方式是通过连线的方式控制不同状态的切换不过在目前的工作中,我们需要单独控制或切换每一个动画状态没有特定的顺序,甚至有可能同时播放几种动画所以不采用连線的方式控制动画的播放。

       Animator.Play播放了一个动画状态第一个参数是状态名称,Animator会播放指定状态名称的状态这个名称与上面可视化状态视图Φ的状态名称相一致。

  ?     也许我需要控制播放动画的某一帧或者更确切的说是播放这个动画的某一时刻,而不播放整个动画这就需要鼡到Animator.Play的第三个参数:normalizedTime。

normalizedTime?标准化时间:如果没有指定或指定值为float.NegativeInfinity则会从头开始播放,否则就会播放当前时间1代表动画播放结束的地方,0表示开始0.5表示动画播放的中点位置。


       不过实际运行后发现只有下载最后的动画EyeBrow有效果,其它动画并没有显示播放出来我的理解是哃一动画层的动画在同时调用时只有最后一次调用的才有效。为了解决这个问题我新建了3个动画层,分别为1,2,3,并且将3个动作复制到这3个动畫层中间并且需要将这三个动画层的weight权重设置为1,这样三个动画就可以同时控制了

?       综上,unity 判断游戏结束Animator是一套非常复杂的系统我所用到和涉及到的仅仅是一些基础知识,在以后会更深入的学习Animator的其它内容

}

我要回帖

更多关于 unity 判断声音结束 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信