动画控制器(AnimatorController)可以帮助你为角色或其他动画对象组织一组动画的播放逻辑。 它通过动画状态机(AnimatorStateMachine)像流程图一样可视化的组织动画对象的动画播放逻辑,并在符合条件时自动切换动画状态(AnimatorState)并播放引用的动画片段(AnimationClip)。
通过动画控制器的编辑器,用户可以在其中组织动画片段的播放逻辑
刚创建的动画控制器中没有任何数据,我们需要对他进行编辑,双击资产, 并为它添加一个动画状态(AnimatorState)
点击 AnimatorState 为它绑定一个动画片段(AnimationClip)
在动画控制组件上绑定该动画控制器(AnimatorController)资产
至此你在导出的项目中就可以通过 animator.play("New State")
播放 Idle
动画了
对于动画控制器编辑器的进一步使用请参考动画状态机文档。
在使用脚本之前,最好阅读动画系统构成文档,以帮助你更好的了解动画系统的运行逻辑
你可以通过 animator.animatorController 属性来为 Animator 绑定动画控制器。加载完成的 glTF 模型如果有动画数据会为每个glTF实例自动绑定一个默认的 AnimatorController。
animator.animatorController = new AnimatorController(engine);
animator.play("New State");
Animator 的 animatorController 就是一个数据存储的类,它不会包含运行时的数据。基于这种设计只要绑定 Animator 组件的模型的骨骼节点的层级结构和命名相同,我们就可以使用此模型的动画数据进行复用。
const animator = model1.getComponent(Animator);
// 获取动画模型的动画控制器
animator.animatorController = animationGLTF.getComponent(Animator).animatorController;
// 播放 animationGLTF 的动画
animator.play("anim from animationGLTF");