动画控制器
(API)可以帮助你为角色或其他动画对象组织一组动画的播放逻辑。
它通过 动画状态机
(详细介绍)像流程图一样可视化的组织动画对象的动画播放逻辑,并在符合条件时自动切换 动画状态
并播放引用的 动画片段
(详细介绍)。
动画层
用于在一个 动画控制器
中组织和管理 动画状态机
,每个 动画层
都有其自己的 动画状态机
。
在 动画控制组件
运行时所有的 动画层
同时运行,通过 混合权重
及 混合模式
控制各个 动画层
对整体动画的影响。关于 动画层
的使用请参考动画层文档。
动画参数
用于控制 动画状态机
的 动画状态
切换,通过设置 动画参数
的值满足 动画过渡
的条件时,动画过渡
会触发,从而切换到目标 动画状态
。关于 动画参数
的使用请参考动画状态机文档。
通过 动画控制器
的编辑器,用户可以在其中组织 动画片段
(详细介绍)的播放逻辑
动画片段
(详细介绍)要组织播放这些 动画片段
我们需要创建一个 动画控制器
资产,创建 动画控制器
有两种方式:
Create
-> Animation Controller
+
,选择 Animation Controller
刚创建的 动画控制器
中没有任何数据,我们需要对他进行编辑,双击资产, 并为它添加一个 动画状态
(详细介绍)
动画状态
为它绑定一个 动画片段
(详细介绍)动画控制组件
(详细介绍)上绑定该 动画控制器
资产animator.play("New State")
播放 Idle
动画了对于动画控制器编辑器的进一步使用请参考动画状态机文档。
在使用脚本之前,建议先阅读以下文档:
你可以通过 animator.animatorController 属性来为 Animator 绑定 动画控制器
。
加载完成的 glTF 模型如果有动画数据引擎会为每个glTF实例自动绑定一个默认的 动画控制器
,你可以直接使用播放其内的动画。
animator.animatorController = new AnimatorController(engine);
animator.play("New State");
动画控制器
就是一个存储数据的类,它不会包含运行时的数据。基于这种设计只要绑定 动画控制组件
的模型的骨骼节点的层级结构和命名相同,我们就可以使用此模型的动画数据进行复用。
const animator = model1.getComponent(Animator);
// 获取动画模型的动画控制器
animator.animatorController = animationGLTF.getComponent(Animator).animatorController;
// 播放 animationGLTF 的动画
animator.play("anim from animationGLTF");