简介: 了解了 AnimatorController 和 Animation 后,我们就可以更深一步的来了解状态机了
版本:Unity2019.4.12f1 HDRP 7.5.1
准备
- 在 Animator 面板的空白处点击右键依次选择 CreteState -> Empty 便可以创建一个空的状态
状态机属性
- 空的状态属性我们需要了解一下
- Motion : 我们需要和这个状态关联的 Animation
- Speed : 本状态关联的 Animation 的播放速度,有了这个我就可以做两个状态,使用同一个 Animation,但是呢速度设置不一样,那么也会有两种效果。
- Multiplier: 速度倍乘一个值,这个值需要是我们在 Parameters 面板内创建的,一搬留给程序使用的,做没有脚本控制的视频可以忽略
- MotionTime :勾选后面的 Parameter 后可以使用一个参数来控制动画位于那个时间点,即这个值就代表了动画播放到了哪一秒,单位是秒,可以有小数
- Mirror :动画镜像,仅适用于人形动画,勾选后面的 Parameter 后可以使用一个 bool 参数来控制
- CycleOffset :
- FootIK: 脚部IK 开启,勾选后
拖拽创建状态
- 我们一般指定动画时,直接将 AnimationClip 拖入到中间的编辑面板即可自动生成一个动画状态
- 黄色的为默认状态,当引擎播放时,会默认播放这个动画,这个状态会默认从 Entry 状态关联上
- 状态右键按钮
1. MakeTransition 转移链接,当前状态的动画播放完成,或者达到某个条件时,要跳到的动画
2. SetAsLayerDefaultState 设置为默认状态,就是将它变成黄色图标
3. Copy 复制,ctrl+C
4. Create New BlendTree in State 在状态内建立混合树
5. Delete 删除
状态连接线
当有两个动画状态通过右键的 MakeTransition 链接起来时,出现一根链接线,这个线可以选中
- 选中链接线后,它属性中的 HasExitTime 勾选后,表示第一个状态播放完成后,会自动播放第二个动画
- 连接线还可以控制两个状态的动画在切换时的融合长度,下图的绿色区域就是混合的位置
- 状态之间的切换除了使用 HasExitTime 还可以自己设置条件参数来控制,做视频一般用不到,我们这里不做讲解了,想了解的可以看一下 官方的文档。
- 状态链接线可以是双向的 ,即可以从 A 到 B ,也可从 B 到 A ,表示,播完 A 播 B ,播完 B 播 A ,往复循环