Godot动画
将以下提示词粘贴到你的 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 做一次性动效反馈
- 关卡或系统策划,需要从文档判断动画该走状态机还是直接播片段