U3L14-3——代码控制动画状态机切换
U3L14-3——代码控制动画状态机切换
关键组件Animator参数相关
-
Controller:对应的动画控制器(状态机)
-
Avatar:对应的替身配置信息(之后讲解3D模型时详细讲解)
-
Apply Root Motion:是否启用动画位移更新
如果要使用动作目标匹配,则该选项必须启用!
-
UpdateMode:更新模式(一般不修改它)
- Normal:正常更新
- Animate Physics:物理更新
- Unscaled Time:不受时间缩放影响
-
Culling Mode:裁剪剔除模式
- Always Animate:始终播放动画,即使在屏幕外也不剔除
- Cull Update Transforms:摄像机没有渲染该物体时,停止位置、IK的写入
- Cull Completely:摄像机没有渲染物体时,整个动画被完全禁用
本章代码关键字
1 | Animator //动画状态机类 |
Animator中的API
我们用代码控制状态机切换主要使用的就是Animator提供给我们的API
我们知道一共有四种切换条件 int
float
bool
trigger
所以对应的API也是和这四种类型有关系的
1 | animator = GetComponent<Animator>(); |
通过状态机条件切换动画
1 | animator.SetFloat("条件名", 1.2f); |
1 | if (Input.GetKeyDown(KeyCode.A)) |
···
获取状态机条件对应的值
1 | animator.GetFloat("条件名"); |
直接切换动画
除非特殊情况 不然一般不使用
1 | animator.Play("状态名"); |
动画状态机加载状态机文件
如果动画要加载某个状态机文件,需要注意属性名为 runtimeAnimatorController
,使用RuntimeAnimatorController
类
1 | animator.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>(info.animator); |
控制动画状态机暂停与播放速度
animator.speed
可以控制动画状态机中动画播放的速度,当 animator.speed == 0
时,动画播放暂停,animator.speed == 1
时,动画正常播放
1 | animator.speed = 0; // 暂停动画 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!