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); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!