动画控制器(AnimatorController)与Animator组件息息相关。动画控制器资源相当于一个容器,我们可以通过创建多个动画节点,并形成动画状态机,来处理各个动画之间的过度以及播放逻辑。
Mecanim的Retargeting
Retargeting的字面含义是目标的重定向,但在Mecanim中指的是角色动画,可以经过Avatar处理过的骨骼间进行重新应用。
在Project视图中右击菜单中可以创建Animator Controller
窗口有3个默认的状态,这些状态是Unity自动帮我们创建的同时也无法删除和修改
Entry:表示当进入当前状态机时的入口,该状态连接的状态会成为进入状态机后的第一个状态;
Any State:表示任意的状态,其作用是其指向的状态是在任意时刻都可以切换过去的状态;
Exit:表示退出当前的状态机,如果有任意状态指向该出口,表示可以从指定状态退出当前的状态机;(作用)
两种方式创建新的状态
1.右键菜单进行创建,可以用一个新名字
2.或者我们可以通过把一个Animation Clip拖拽到状态机窗口中进行创建。新状态标记为黄色,同时被设置为默认的第一个状态。
状态面板
Motion 表示当前状态对应的Animation Clip
Speed 速度
Mirror 镜面(复用动画)
Cycle Offset 播放偏移量
Foot IK 是否启用脚部的IK动画
Write Defaults:动画播放完毕后是否将状态重置为默认状态,一般勾选即可
Solo 勾选表示当前过渡为唯一过渡,即当前状态只能过渡到这个项目指向的状态;(用于复杂状态机,单独预览其中某些部分的效果时)
Mute 勾选表示使这个动画过渡关闭,即当前状态不能过渡到这个项目指向的状态;
切换默认动画 Set As Default
进行动画状态连接 Make Transition
打开Parameters面板,这里被用来设置状态机使用到的各种参数
Trigger和Bool类型的区别是,Trigger值为True的情况下,动画执行一次后,条件自动还原
点击过渡线,可以在Inspector窗口设置动画切换,也可以设置两个动画的淡入淡出
Solo单线通过
Mute暂停,通不过
Has Exit Time 是否有退出时间,当前动画能否被打断,勾选后当前动画播放完才去播放另一个
Conditions 过渡条件
SetFloat/Getfloat/SetInteger/GetInteger/SetBool/GetBool/SetTrigger/GetTrigger用于设置相应类型的动画参数。
StringToHash是静态函数,用于动画状态的名称得到该动画状态的HashID,其返回值是int
GetCurrentAnimatorStateInfo/GetNextAnimatorStateInfo用于得到当前层/下一个动画状态(IsName等 )