Agent Skills
返回列表
💻

Godot动画

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-animation-1dum。

技能介绍

为什么需要区分这三个动画工具

在 Godot 4.3+ 的项目里,动画不是单一工具能解决的问题。AnimationPlayer 负责存储关键帧片段,但当你需要在运行时混合多个片段(比如角色从走路过渡到跑步)时,必须依赖 AnimationTree 的状态机或混合空间。而代码驱动的短动画(如 UI 弹出效果)则需要用 Tween 实现。选错工具会导致动画逻辑混乱,比如在 AnimationTree 激活时直接调用 AnimationPlayer.play(),结果两边互相覆盖,角色动画卡顿。

核心能力与关键步骤

这个技能的核心是帮你按场景选择正确的工具链:

  • 关键帧片段创作:用 AnimationPlayer 存储变换、属性、方法调用甚至其他动画的引用,它是片段数据的权威来源。
  • 状态混合与过渡:AnimationTree 需要绑定 AnimationPlayer,通过状态机(AnimationNodeStateMachine)或二维混合空间(AnimationNodeBlendSpace2D)实现运行时混合。例如角色跑步方向根据 blend_position 参数混合上/下/左/右跑步动画。
  • 代码驱动的程序化补间:用 create_tween() 创建一次性补间,适合 UI 淡入淡出、位置微调等场景。注意子属性补间需用冒号语法(如 "modulate:a"),避免覆盖兄弟属性。
  • 事件驱动与状态切换:通过 animation_finished 信号或 call 轨道响应动画完成事件;用 travel() 方法在状态机间跳转,而非直接调用 play()。

适用边界与注意点

这个技能不处理移动逻辑本身(交给 godot-2d-movement)、UI 布局(交给 godot-ui-control)或着色器特效(交给 godot-shaders)。常见陷阱包括:

  • AnimationTree.active 未启用:导致 travel() 静默失败,必须显式设置 active = true 并绑定 anim_player 路径。
  • 参数路径拼写错误:混合/条件路径必须严格匹配节点树中的名称(如 "parameters/Move/blend_position"),否则静默无效。
  • 补间复用问题:Tween 是一次性对象,动画完成后需重新调用 create_tween(),循环需用 set_loops()。
  • 过时语法:Godot 4.x 已移除 Tween 节点和 yield 语法,改用 create_tween() 和 await anim.animation_finished。

使用场景

  • 角色控制中,需要根据速度混合 idle/walk/run 并平滑过渡动画状态
  • 2D 游戏角色用 AnimatedSprite2D 播放精灵图,但要在代码里切换帧动画
  • UI 按钮需要代码触发淡入淡出和缩放反馈,而不是配置静态布局
  • 关键帧片段播完后要触发逻辑,比如重播动画或生成下一个动作

适合人员

  • Godot 4.3+ 客户端开发者,需要区分 AnimationPlayer、AnimationTree 与 Tween 的使用边界
  • 2D 游戏程序,正在实现精灵帧动画与角色状态混合
  • UI 工程师,要在代码里用 create_tween 做一次性动效反馈
  • 关卡或系统策划,需要从文档判断动画该走状态机还是直接播片段