动画功能介绍

AnimationPlayer 节点允许您创建从简单到复杂的任何动画。

在本指南中,您将学会:

  • 使用动画面板

  • 使任何节点的任何属性变成动画

  • 创建简单的动画

  • 使用功能强大的函数调用轨道调用函数

在 Godot 中,你可以对“检查器”中可用的任何内容设置动画,例如 Node 的变换、精灵、UI 元素、粒子、可见性、材质的颜色等等。您还可以修改脚本变量的值、调用任何函数。

创建 AnimationPlayer 节点

要使用动画工具, 我们首先必须创建一个 AnimationPlayer 节点.

AnimationPlayer节点类型是动画的数据容器. 一个AnimationPlayer节点可以保存多个动画, 这些动画可以自动相互转换.

AnimationPlayer节点

AnimationPlayer节点

创建后, 单击节点选项卡中的AnimationPlayer节点, 打开视窗底部的动画面板.

动画面板位置

动画面板位置

它由四部分组成:

动画面板

动画面板

  • 动画控件(即添加, 加载, 保存和删除动画)

  • 轨道列表

  • 带有关键帧的时间轴

  • 时间轴和轨道控件, 例如, 您可以在其中缩放时间轴和编辑轨道.

计算机动画依赖于关键帧

关键帧定义属性在某一时间点的值.

菱形代表时间轴中的关键帧. 两个关键帧之间的线表示该值未更改.

Godot中的关键帧

Godot中的关键帧

引擎在关键帧之间插入值, 导致值随时间逐渐变化.

只需两个关键帧就可以获得一个平滑运动

只需两个关键帧就可以获得一个平滑运动

时间轴可以让你插入关键帧并更改它们的时序. 它还定义动画的时间.

动画面板中的时间轴

动画面板中的时间轴

动画面板的每一行都是一个动画轨道. 普通和转换轨道引用节点属性. 它们的名称或id是指向节点和受影响属性的路径.

普通动画轨道的示例

普通动画轨道的示例

小技巧

如果你的动画属性错误, 你可以随时编辑轨道路径. 双击它并输入新的路径. 使用 “从头开始播放” 按钮|从头开始播放|(或按键盘上的 Shift + D )播放动画, 可以立即看到变化.

教程:创建简单的动画

场景设置

在本教程中,我们将创建一个 AnimationPlayer 节点,并将精灵(Sprite)节点作为其子节点。我们会让这个精灵在屏幕上的两点之间进行移动。

我们的场景设置

我们的场景设置

警告

AnimationPlayer 继承自 Node 而不是 Node2D 或者 Spatial。因为层级中间出现了普通的 Node 节点,所以它的子节点不会继承父节点的变换。

所以,不建议把具有 2D 或者 3D 变换的节点设置成 AnimationPlayer 节点的子节点。

精灵拥有图片纹理,我们会让它在屏幕上的两点之间做移动动画。本教程使用默认的 Godot 图标作为该精灵的纹理。将精灵移动到屏幕左侧作为起点。

选中 AnimationPlayer 节点,然后点击动画编辑器中的“动画”按钮。从列表中选择“新建”( 添加动画 )来添加一个新的动画,并在对话框中为该动画输入名称。

添加新动画

添加新动画

添加轨道

要为我们的精灵添加一个新的轨道, 选择它并在工具栏中查看:

方便按钮

方便按钮

这些开关和按钮允许您为选择的节点的位置, 旋转和比例分别添加关键帧.

取消选择旋转, 因为我们只对本教程的精灵位置感兴趣, 并单击键按钮.

由于我们还没有为变换或位置属性设置轨道,Godot询问是否应该设置, 点击 Create .

这会在时间轴的开头创建一个新轨道和第一个关键帧:

精灵轨道

精灵轨道

第二个关键帧

现在我们需要设置我们的精灵应该到达的目的地以及到达那里需要多长时间.

让我们说, 我们希望它需要2秒才能到达另一个点. 默认情况下, 动画设置为仅持续1秒, 因此在动画面板下方面板的时间轴控件中将其更改为2.

动画长度

动画长度

点击2秒附近的时间线标记, 将精灵移动到右侧的目标目的地.

再次单击工具栏中的键按钮. 这创建了我们的第二个关键帧.

运行动画

点击“从头开始播放”(从头开始播放)按钮。

好极了! 我们的动画运行:

动画

动画

来来回回

Godot在这里还有一个额外功能. 就像之前说的,Godot总是计算两个关键帧之间的帧数. 在一个循环中, 如果最后没有指定关键帧, 第一个关键帧将也是最后一个关键帧.

动画循环

动画循环

如果你现在将动画长度设置为4秒, 动画就会来回移动. 如果改变轨道的循环模式, 你可以改变这种行为. 这将在下一章中介绍.

轨道设置

每条轨道最后都有一个设置面板,可以设置更新模式, 轨道插值, 循环模式。

轨道设置

轨道设置

轨道的更新模式告诉 Godot 何时更新属性值。这可以是:

  • 连续:每帧都更新属性。

  • 离散:仅在位于关键帧时更新属性。

  • 触发器:仅在位于关键帧或触发器时更新属性。触发器是一种关键帧的类型,AnimationPlayercurrent_animation 属性和动画播放轨道都会用到。

  • 捕获:如果第一个关键帧的时间大于 0.0,就会记录该属性的当前值,并将其与第一个动画帧混合。例如,利用“捕获”模式,你可以将处于任意位置的节点移动到特定的位置。

轨道模式

轨道模式

在普通动画中,你通常使用“连续”。其他类型可用于编排复杂动画。

插值告诉 Godot 如何计算关键帧之间的帧值。支持的插值模式有:

  • 临近:设置为最接近的关键帧的值

  • 线性:使用线性函数计算两个关键帧之间的值

  • 三次方:使用三次函数计算两个关键帧之间的值

轨道插值

轨道插值

立方插值导致更自然的运动, 其中动画在关键帧处较慢而在关键帧之间更快. 这通常用于角色动画. 线性插值创造了更多的机器人运动.

Godot支持两种循环模式, 如果将其设置为循环, 则会影响动画:

循环模式

循环模式

  • 钳位循环插值: 选择此选项后, 动画将在此轨道的最后一个关键帧之后停止. 再次到达第一个关键帧时, 动画将重置为其值.

  • 包循环插值: 当选择此项时,Godot会在最后一个关键帧之后计算动画, 以再次达到第一个关键帧的值.

其他属性的关键帧

Godot不限制您只编辑变换属性. 每个属性都可以用作可以设置关键帧的轨道.

如果你在动画面板可见时选择你的精灵, 会获得一个小的关键帧按钮, 用于显示精灵的所有属性. 点击这个按钮,Godot就会自动为当前动画添加一个轨道和关键帧.

其他属性的关键帧

其他属性的关键帧

编辑关键帧

对于高级使用和详细编辑关键帧,您可以点击它们打开检查器中的关键帧编辑器,可以用它来直接编辑值。

关键帧编辑器编辑一个键

关键帧编辑器编辑一个键

此外,还可以通过单击并拖动缓动设置来编辑此关键帧的缓动值。这将告诉 Godot,当它到达此关键帧时如何更改属性值。

当这个动作“看起来不正确”时,您通常会以这种方式调整您的动画。

进阶:方法调用轨道

Godot 的动画引擎并不止于此。如果你已经熟悉了 Godot 的脚本语言 GDScript 基础Godot API,你就知道每个节点类型都是一个类,并且有一堆可调用的方法。

例如 AudioStreamPlayer 节点类型有一个播放音频流的方法.

在动画中的特定关键帧中使用一个方法不是很好吗?这时,”调用方法轨道” 就派上用场. 这些轨道再次引用一个节点, 没有引用属性, 取而代之的是, 一个关键帧保存着一个方法的名称和参数, 当Godot到达这个关键帧时, 它将调用这个方法.

为了演示, 我们将使用调用方法轨道在特定关键帧处播放音频. 通常, 要播放音频, 你应该使用音轨, 但是为了演示方法, 我们将采用这种方式.

在场景树中添加 AudioStreamPlayer, 并使用放在项目中的音频文件设置流.

点击动画面板轨道控制上的“添加轨道”(添加轨道)。

从可能的轨道类型列表中选择 “添加调用方法轨道”.

添加调用方法轨道

添加调用方法轨道

在选择窗口中选择 AudioStreamPlayer 节点. Godot添加了轨道节点的引用.

选择AudioStreamPlayer

选择AudioStreamPlayer

右键单击 Godot 播放示例的时间线, 然后单击 “插入关键帧” 选项. 这将显示可为 AudioStreamPlayer 节点调用的方法的列表. 选择第一个.

../../_images/animation_method_options.png

当Godot到达关键帧时,Godot调用 AudioStreamPlayer 节点的 “play” 函数, 播放流媒体.

你可以通过在时间轴上拖动它来更改其位置, 也可以单击关键帧并使用检查器中的关键帧设置.

../../_images/animation_call_method_keyframe.png

使用 RESET 轨道

你可以设置一个特殊的 RESET(重置)动画来包含“默认姿势”。这样就可以保证在保存场景并重新在编辑器中打开时,会恢复默认姿势。

对于已存在的轨道,你可以添加一个名为“RESET”(大小写敏感)的动画,然后为每一个你希望重置的属性添加轨道。应该只在时间为 0 处存在一个关键帧,其值为每条轨道所期望的默认值。

如果 AnimationPlayer 的 Reset On Save(保存时重置)属性为 true,场景在保存时会应用重置动画的效果(相当于寻道到 0.0 时间点的效果)。只有保存的文件会受到影响——编辑器中的属性轨道还是会保持原样。

如果你想要在编辑器中重置轨道,请选中 AnimationPlayer 节点,打开动画底部面板,然后选择动画编辑器动画下拉菜单中的应用重置

为新建的动画添加轨道时,如果使用的是检查器中属性旁的关键帧图标,编辑器会询问是否自动添加一条 RESET 轨道。这对于使用 3.4 版本之前的 Godot 创建的轨道并不适用,因为动画重置轨道功能是在 3.4 版本中加入的。