Marionette 动画系统

Cocos Creator 3.4 引入了一个全新的 Marionette 动画系统,通过状态机控制对象的骨骼动画,实现了自动化、可复用的动画流程。

为了跟 v3.4 之前的动画系统区分,我们将新的动画系统称为木偶(Marionette)动画系统,称 v3.4 之前使用的动画系统为旧式动画系统。两种动画系统都可以正常使用,但不支持同时使用。主要的区别在于:

  • 旧式动画系统:以动画组件、动画状态为核心,手动简单控制动画剪辑的播放暂停等。动画剪辑支持使用通过编辑器创建的 Animation Clip 和外部导入的骨骼动画(.fbx.gltf.glb)。

  • Marionette 动画系统:以动画控制器组件、动画图为核心,按照事先搭建好的动画图,通过状态机自动控制动画剪辑的播放和切换等。动画剪辑只支持外部导入的骨骼动画(.fbx.gltf.glb)。

内容

Marionette 动画系统主要内容包括:

名词解释

Marionette 动画系统相关功能名词的说明如下:

功能名词说明
动画图资源用于存储对象的整个动画流程数据,可直接在 资源管理器 面板创建。详情请参考 动画图资源
动画控制器组件引用动画图资源并将其应用于对象。详情请参考 动画控制器组件参考
动画图面板当准备好对象所需的骨骼动画后,便可通过动画图面板将其组合成完整的动画流程。具体的操作请参考 动画图面板
状态对象所处的一种播放特定动画剪辑的动作,例如待机、行走、移动、攻击等。
该状态与旧式动画系统中,动画组件为每一个动画剪辑创建的 动画状态 不同。
状态过渡大多数情况下,一个对象会拥有多个状态,并按照一定的需求逻辑在各个状态之间切换,这种切换便称为 状态过渡。例如角色在行走时触发了死亡条件,行走状态便会切换到死亡状态。
动画状态机用于可视化地管理控制某个对象上各个状态及状态之间的过渡,可视为一个流程图。详情请参考 动画状态机

状态及状态过渡在动画图面板中是以图形的方式显示,例如下图,方块表示状态,箭头表示状态之间的过渡:

example

范例参考

Creator 提供了 Ms.AmoyGitHub|Gitee)范例,演示了 Marionette 动画系统的使用方式,用户可根据需要下载参考使用。