动画轨道类型
本页面概述了在默认属性轨道之外,Godot动画播放器节点可用的轨道类型。
参见
我们假设你已经阅读了 动画功能介绍,其中包括了一些基础知识,包括属性轨道。
属性轨道
最基本的轨道类型。见 动画功能介绍。
3D 位置、旋转、缩放轨道
这些 3D 变换轨道控制的是 3D 对象的位置、旋转和缩放。这样为 3D 对象的变换做动画相比于使用普通属性轨道更方便。
它专为从外部3D模型导入的动画而设计,并可以通过压缩来减少资源占用。
混合形状轨道
混合形状轨道针对 MeshInstance3D 中的混合形状动画进行了优化。
它专为从外部3D模型导入的动画而设计,并可以通过压缩来减少资源占用。
方法调用轨道
方法调用轨道允许你在动画中的特定时间调用函数。例如,你可以在死亡动画的结束时调用 queue_free()
来删除节点。
备注
为了安全起见,在编辑器中预览动画时,方法调用轨道上的事件不会被执行。
To create such a track in the editor, click “Add Track -> Call Method Track.” Then, a window opens and lets you select the node to associate with the track. To call one of the node’s methods, right-click the timeline and select “Insert Key”. A window opens with a list of available methods. Double-click one to finish creating the keyframe.
要更改方法调用或其参数,请单击关键帧并转到检查器面板。在那里,你可以更改要调用的方法。如果展开“Args”部分,你将看到一个可编辑的参数列表。
To create such a track through code, pass a dictionary that contains the target method’s name and parameters as the Variant for key
in Animation.track_insert_key()
. The keys and their expected values are as follows:
键 | 值 |
---|---|
| 方法的名称,类型为 |
| 传递给该函数的所有参数,类型为 |
GDScriptC#
# Create a call method track.
func create_method_animation_track():
# Get or create the animation the target method will be called from.
var animation = $AnimationPlayer.get_animation("idle")
# Get or create the target method's animation track.
var track_index = animation.add_track(Animation.TYPE_METHOD)
# Make the arguments for the target method jump().
var jump_velocity = -400.0
var multiplier = randf_range(.8, 1.2)
# Get or create a dictionary with the target method's name and arguments.
var method_dictionary = {
"method": "jump",
"args": [jump_velocity, multiplier],
}
# Set scene-tree path to node with target method.
animation.track_set_path(track_index, ".")
# Add the dictionary as the animation method track's key.
animation.track_insert_key(track_index, 0.6, method_dictionary, 0)
# The target method that will be called from the animation.
func jump(jump_velocity, multiplier):
velocity.y = jump_velocity * multiplier
// Create a call method track.
public void CreateAnimationTrack()
{
// Get reference to the AnimationPlayer.
var animationPlayer = GetNode<AnimationPlayer>("AnimationPlayer");
// Get or create the animation the target method will be called from.
var animation = animationPlayer.GetAnimation("idle");
// Get or create the target method's animation track.
var trackIndex = animation.AddTrack(Animation.TrackType.Method);
// Make the arguments for the target method Jump().
var jumpVelocity = -400.0;
var multiplier = GD.RandRange(.8, 1.2);
// Get or create a dictionary with the target method's name and arguments.
var methodDictionary = new Godot.Collections.Dictionary
{
{ "method", MethodName.Jump },
{ "args", new Godot.Collections.Array { jumpVelocity, multiplier } }
};
// Set scene-tree path to node with target method.
animation.TrackSetPath(trackIndex, ".");
// Add the dictionary as the animation method track's key.
animation.TrackInsertKey(trackIndex, 0.6, methodDictionary, 0);
}
// The target method that will be called from the animation.
private void Jump(float jumpVelocity, float multiplier)
{
Velocity = new Vector2(Velocity.X, jumpVelocity * multiplier);
}
贝塞尔曲线轨道
贝塞尔曲线轨道类似于属性轨道,但它允许你使用贝塞尔曲线来控制属性的值。
备注
贝塞尔曲线轨道和属性轨道不能在 AnimationPlayer 和 AnimationTree 中混合。
要创建一个贝塞尔曲线轨道,请单击“添加轨道 -> 贝塞尔曲线轨道”。与属性轨道一样,你需要选择要设置动画的节点和属性。请单击动画轨道右侧的曲线图标以打开贝塞尔曲线编辑器。
在编辑器中,帧由实心菱形表示,空心菱形通过线控制曲线的形状连接到它们。
小技巧
为了在手动处理曲线时获得更好的精度,你可能需要更改编辑器的缩放级别。编辑器右下角的滑块可以用来在时间轴上放大和缩小,你也可以使用:kbd: ‘ Ctrl + Shift +鼠标滚轮’来实现。使用:kbd:“Ctrl + Alt +鼠标滚轮”将在Y轴上放大和缩小
在编辑器右键面板中,可以选择控柄模式:
自由:允许你将操纵器定向到任何方向,而不影响另一个操纵器的位置。
线性:不允许操纵器旋转,绘制线性图形。
平衡:使操纵器一起旋转,但关键帧和操纵器之间的距离不镜像。
镜像:使一个操纵器的位置完美镜像另一个操纵器,包括它们到关键帧的距离。
音频播放轨道
如果要创建带音频的动画,则需要创建音频播放轨道。为了创建音频播放轨道,你的场景必须具有 AudioStreamPlayer、AudioStreamPlayer2D 或 AudioStreamPlayer3D 节点。创建轨道时,你必须选择这些节点之一。
为了在动画中播放声音,请将音频文件从文件系统面板拖放到动画轨道上。你应该能在轨道中看到音频文件的波形。
为了从动画中删除声音,你可以右键单击它并选择“删除关键帧”或单击它并按 Del 键。
混合模式允许你选择在 AnimationTree 中混合时是否调整音频音量。
动画播放轨道
动画播放轨道允许你对场景中其他动画播放器节点的动画进行排序。比如你可以用它为过场动画中的多个角色制作动画。
要创建动画播放轨道,请选择“新建轨道 -> 动画播放轨道”。
而后选择要与轨道关联的动画播放器。
请右键单击轨道并插入帧,来将动画添加到轨道中。选中你刚创建的帧,以在检查器面板中选择动画。
如果动画已经在播放,并且你想提前停止它,可以创建一个帧并将其在检查器中设置为 [STOP] 。
备注
如果你在场景中实例化了包含动画播放器的场景,则需要在场景树中启用“子节点可编辑”,才能访问它的动画播放器。除此之外,动画播放器也无法引用自身。