本文档介绍了 Godot 中的动画系统,重点介绍了 AnimationPlayer 节点和动画轨道。它涵盖了动画如何在 Godot 项目中创建、组织和播放。有关混合和状态机等更高级的动画功能,请参阅 动画树。
Godot 动画系统允许您为场景中的任何节点的几乎任何属性设置动画。核心组件包括:
动画系统架构
来源
The AnimationPlayer 节点是播放动画的主要方式。它继承自 AnimationMixer,并管理一组动画,这些动画可以按顺序播放或在它们之间进行过渡。
The AnimationPlayer 节点提供了多种控制动画播放的方法:
play(name, custom_blend, custom_speed, from_end) - 播放指定的动画play_backwards(name, custom_blend) - 反向播放动画stop() - 停止当前动画queue(name) - 排队等待动画播放完当前动画后播放seek(position, update) - 跳转到动画中的特定位置// Basic playback example
animation_player.play("walk")
animation_player.queue("idle")
来源
您可以设置动画之间的自定义混合时间,以实现平滑的过渡。
// Setting a blend time of 0.5 seconds between "walk" and "run"
animation_player.set_blend_time("walk", "run", 0.5)
您还可以设置自动过渡,以在动画结束后播放下一个动画。
// "idle" will automatically play after "attack" finishes
animation_player.animation_set_next("attack", "idle")
来源
The Animation 资源包含实际的动画数据,按轨道组织。每个动画都有长度、循环模式和步长(帧率)等属性。
length - 动画的时长(以秒为单位)loop_mode - 动画如何处理循环(无、线性、乒乓)step - 最小播放步长(以秒为单位)来源
动画由不同类型的轨道组成,每种轨道都用于动画化特定属性。每个轨道都使用路径字符串来定位节点属性。
| 轨道类型 | 描述 | 常见用途 |
|---|---|---|
TYPE_VALUE | 动画化任意属性 | 位置、颜色、可见性等。 |
TYPE_POSITION_3D | 针对 3D 位置进行了优化 | 移动 3D 对象 |
TYPE_ROTATION_3D | 针对 3D 旋转进行了优化 | 旋转 3D 对象 |
TYPE_SCALE_3D | 针对 3D 缩放进行了优化 | 缩放 3D 对象 |
TYPE_BLEND_SHAPE | 动画化混合形状 | 面部表情、变形 |
TYPE_METHOD | 在特定时间调用方法 | 触发效果、声音 |
TYPE_BEZIER | 使用贝塞尔曲线动画化 | 平滑的属性动画 |
TYPE_AUDIO | 在特定时间播放音频 | 声音效果、对话 |
TYPE_ANIMATION | 触发其他动画 | 子动画 |
来源
每个轨道包含在特定时间具有值的关键帧(关键帧)。引擎在播放期间在这些关键帧之间进行插值。
轨道路径遵循 NodePath:property[:subproperty] 的格式。例如:
Sprite2D:position:x - 动画化 Sprite2D 节点的 X 位置MeshInstance3D:mesh:surface_material_override/0:albedo_color - 动画化材质颜色来源
Godot 编辑器提供了创建和编辑动画的综合界面。
动画轨道编辑器允许您:
来源
当动画播放时,AnimationPlayer 会通过以下方式处理动画:
动画系统在以下情况下会触发回调:
animation_started)animation_changed)animation_finished)来源
动画被组织成 AnimationLibrary 资源,这些资源可以添加到 AnimationPlayer 中。每个库可以包含多个动画。
// Accessing animations from a library
var anim = animation_player.get_animation("walk")
var library_anim = animation_player.get_animation("combat/attack")
来源
AnimationPlayer 节点来源
动画系统可用于
Godot动画系统提供了一种强大而灵活的方式来为游戏中的任何属性设置动画。AnimationPlayer 节点作为播放和管理动画的核心控制器,而不同的轨道类型允许您为特定属性设置动画。动画轨道编辑器提供了一个全面的界面,用于可视化地创建和编辑动画。
有关更高级的动画功能,如混合树和状态机,请参阅 Animation Tree 文档,该文档建立在这些核心概念之上。