unity之Mecanim动画系统学习(2)
Animator 和Animation
Animation就是单个动画文件,而Animator 是把这些动画文件按照一定的逻辑播放的控制组件
unity中的动画文件
Animation Clip
每个动作的动画剪辑(吧一个弯针的动画分解成几个动作,这样我们使用动画系统控制时就比较好分离)
Animation
老的动画形式的文件,使用XML数据来记录动画信息
Animation View的使用
unity中有制作Animation 的系统,但是我们一般不会用来制作比较复杂的动画;一般Animation 窗口制作过场动画,比如游戏开始的动画,人物死亡后摄像机的移动动画等
注:这个过场动画根据笔者的经验所得,是根据目标在场景中的三维坐标录制的,因此如果想要复用这个动画的话,不能够直接使用,而要复制一份然后更改上面的坐标信息
事件系统
对于一个动画,我们还可以为其任意一帧添加一个事件:
1.首先,我们为Main Camera添加一个接收Event事件的组件,然后随便写一个打印函数
2.下面我们在Animation窗口中的任意一帧添加一个事件,并调用ShowAnimMsg方法同时传递一个字符串:
最后运行游戏到达指定时间就会有效果出现
动画的设置
Loop time:动画是否循环播放。
下面出现了3个大致一样的选项:
Root Transform Rotation:表示为播放动画的对象的旋转方面的信息。
Root Transform Position(Y):表示为播放动画的对象的位置 y 轴方面的信息。
Root Transform Position(XZ):表示为播放动画的对象的位置 XZ 平面方面的信息。
他们都有一致的选项,我们逐个的来看:
Bake Into Pose:不勾选表示动画产生的旋转或位移(具体看是哪个选项下面)会应用到播放动画的主体对象上,勾选则表示不会应用到播放动画的主体对象上。
注:Bake Into Pose的具体例子,如我有一个跳跃的动画,,如果Bake Into Pose没勾选,则人物会向前;勾选了,则人物不会向前
Based Upon:基准点,有如下类型:
Original:表示基准点使用在动画文件中预设好的值。
Center of Mass:表示基准点使用质量中心,表现为人物下半身会嵌入地面。
Feet:表示基准点使用第一帧的脚
动画状态(状态机)
Animator Controller:
这是随便一个Animator Controller的画面,里面包含了各个动画的执行逻辑。右方的显示面板是一个标准的有限状态机配置面板,其中有3个状态“Entry”、“Any State”和“Exit”是由系统生成的,其它状态则由我们自己创建和管理。中间的箭头则表示可以从当前状态过渡到下一状态
状态的属性面板
(以下参考了晚上的描述)()
Motion:表示当前状态对应的Animation Clip;
Speed:表示当前状态的速度,1表示正常速度,后面的Parameter勾上表示使用一个参数来表示当前的速度,同时输入框会变为下拉选择框,我们可以选择指定的参数,参数可以在Parameters面板中配置,其作用就是可以方便的通过代码修改参数的值来达到控制速度的目的,下面的Parameter也一致,就不赘述了。
Mirror:是否将动画沿Y轴进行翻转,一般用来复用动画,比如招右手的动画勾选了此项就会变为招左手;
Cycle Offset:播放偏移量;
Foot IK:是否开启脚部的IK动画(反向动力学),一般关闭,在需要脚部贴合地面的情况时可以开启;
Write Defaults:动画播放完毕后是否将状态重置为默认状态,一般勾选即可;
下面的Transitions面板则会列出当前状态可以过渡到其它状态的列表:
Solo:勾选表示当前过渡为唯一过渡,即当前状态只能过渡到这个项目指向的状态;
Mute:勾选表示使这个动画过渡关闭,即当前状态不能过渡到这个项目指向的状态;