Godot 动画
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/godot-animation-sh-e8kv4e。
技能介绍
解决什么问题
Godot 4.x 做动画时,最容易踩的不是“不会播放”,而是不知道用哪个工具:AnimationPlayer、AnimationTree、Tween 的边界不清,导致状态机没接管播放、参数路径写错静默失效、或代码和编辑器互相覆盖轨道。这个技能把常见 2D/3D 动画场景收敛成一条可执行路径:用关键帧制作素材,用状态机做运行混合,用代码做一次性 UI/物体补间。
技能如何工作
它按任务选择工具:
AnimationPlayer:负责关键帧轨道,记录 transform、属性、方法调用等“动画数据源”。AnimationTree:把多个 clip 接到运行时状态机或 blend space 中,处理 idle/run/方向混合等过渡。Tween:通过create_tween()做代码驱动的一次性插值,适合 UI 弹出、淡入淡出、单点位移。
关键步骤是先建立 clip,再让 AnimationTree 成为播放 owner:设置 active = true,绑定 anim_player,把 AnimationNodeStateMachine 或 AnimationNodeBlendSpace2D 作为根节点。之后用 playback travel 或 blend 参数切换状态,并用 animation_finished 与 call/method tracks 响应事件。对 2D sprite sheet,可走 AnimatedSprite2D + SpriteFrames,也可用 AnimationPlayer 关键帧 frame 属性。
适用边界与注意点
它适合“播放/混合/补间动画”,不适合负责移动逻辑本身、UI 布局或 shader 特效。常见坑包括:AnimationTree.active 未开启导致 travel() 看似无效;blend/condition 参数路径必须与树节点名完全一致;AnimationTree 激活后不要再对同一轨道调用 AnimationPlayer.play();4.x 中没有 3.x 的 Tween 节点;tween 是一次性资源,循环要用 set_loops();子属性补间要用冒号路径,如 modulate:a、position:x。
使用场景
- 在 Godot 2D 角色项目中把 idle、run、hurt 做成 clip,并用 AnimationTree 状态机切换。
- 给 UI 面板做淡入淡出、弹出和缩放,用 `create_tween()` 驱动一次性 Tween。
- 把 `SpriteFrames` 动画接进 `AnimatedSprite2D`,或用 `AnimationPlayer` 关键帧播放 `frame` 属性。
- 在代码里根据 `animation_finished` 事件和 call track 触发后续行为,避免手动轮询播放状态。
适合人员
- 做 Godot 2D 角色动画的独立开发者,需要把多段 idle/run/hurt clip 接成可切换状态机。
- 负责游戏 UI 表现的工程师,需要用 Tween 做弹窗、淡入、按钮反馈等一次性补间。
- 维护 Godot 4.x 项目的开发者,需要区分 AnimationPlayer、AnimationTree 和 Tween 的职责。
- 做 sprite sheet 播放的 2D 开发者,需要把 `SpriteFrames` 与代码事件接起来。