本文档描述了 Godot 引擎的动画系统,重点关注核心组件、架构以及系统中不同部分之间的交互。Godot 中的动画系统允许创建、编辑和播放动画,这些动画可以随时间修改节点的属性。
有关动画回调和信号的信息,请参阅动画通知。有关动画编辑器 UI 的信息,请参阅动画编辑器 UI。
Godot 动画系统由几个关键组件组成,这些组件协同工作,提供了一个灵活而强大的动画框架。
来源
Animation 资源构成了动画系统的基础。它存储关键帧,这些关键帧可以通过各种轨道类型随时间修改节点的属性。
每个动画包含多个轨道,每个轨道都针对节点的特定属性路径。轨道包含键(关键帧),用于定义目标属性何时以及如何更改。
来源
AnimationPlayer 是用于播放和控制动画的主要节点。它继承自 AnimationMixer,并提供了一种简单的方式来播放场景节点的动画。
来源
AnimationTree 通过一系列 AnimationNode 的层级混合提供更高级的动画控制。它适用于需要混合多种动画的复杂动画。
来源
下图显示了在播放期间动画数据如何在 Godot 动画系统中流动
来源
动画轨道是定义动画期间哪些属性会变化的机制。它们的工作方式如下:
来源
混合树允许基于参数进行复杂的动画混合。它们构建在一个节点图上,其中每个节点处理动画数据并输出结果。
来源
状态机根据条件管理不同动画或动画状态之间的转换。
来源
来源
动画编辑器提供了在 Godot 编辑器中创建和编辑动画的工具。
来源
动画系统按以下步骤处理动画
来源
Godot中的动画被组织在动画库中,动画库是AnimationPlayer节点可以加载和使用的动画集合。
来源
动画混合允许在动画之间进行平滑过渡或混合多个动画。
来源
动画轨道可以通过不同的方式更新,这会影响它们在播放时的行为。
| 更新模式 | 描述 | 用例 |
|---|---|---|
| 离散(DISCRETE) | 值在关键帧处突变 | 布尔值、枚举、简单状态更改 |
| 连续(CONTINUOUS) | 值在关键帧之间进行插值 | 大多数数值属性(位置、缩放等) |
| 捕获(CAPTURE) | 值从当前状态捕获 | 需要匹配场景当前状态的属性 |
| 重置(RESET) | 值重置为原始状态 | 应恢复到初始值的属性 |
来源
根运动是一种技术,其中移动动画从动画数据中提取,并应用于节点本身,而不是应用于其内部骨架。
来源
Godot中的动画系统遵循分层结构
这些组件共同提供了一个灵活而强大的动画系统,能够处理从简单的属性动画到复杂的角色动画系统的一切。
来源