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齐的博客!
