ai-behavior-trees-util…
Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators)…
Animate in Godot 4.7 three ways: AnimationPlayer for keyframed clips (incl. Call Method tracks), AnimationTree with state machines and blend spaces for character animation, and Tween for short procedural/UI tweens via create_tween(). Use when working with
Claude Code
$ npx -y skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation --agent claude-code
Codex
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a codex -y
Cursor
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a cursor -y
Gemini CLI
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a gemini-cli -y
GitHub Copilot
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a github-copilot -y
OpenCode
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a opencode -y
Windsurf
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-animation -a windsurf -y
name: godot-animation description: > Animate in Godot 4.7 three ways: AnimationPlayer for keyframed clips (incl. Call Method tracks), AnimationTree with state machines and blend spaces for character animation, and Tween for short procedural/UI tweens via create_tween(). Use when working with AnimationPlayer/AnimationTree nodes in a .tscn, blending character states, sprite-sheet animation, or code-driven Tweens.
Choose and drive the right animation tool: `AnimationPlayer` (clips), `AnimationTree` (blending/state machines), or `Tween` (short procedural moves). Targets **Godot 4.7**.
sprite sheet, or tweening UI/objects in code.
**When *not* to use:** the movement *logic* that decides which state to play → `godot-2d-movement`; UI layout (vs. UI tweening) → `godot-ui-control`; shader-driven effects → `godot-shaders`.
1. **Pick the tool:**
audio, even other animations). The source of truth for clip data.
machine and/or blend spaces. Needs an `AnimationPlayer` to pull clips from.
for UI pops, fades, and one-off moves. 2. **For 2D sprite sheets:** use `AnimatedSprite2D` + `SpriteFrames`, or keyframe the `frame` property in an `AnimationPlayer`. 3. **For characters:** build clips in `AnimationPlayer`, then add an `AnimationTree` (`active = true`), set its `anim_player`, and design an `AnimationNodeStateMachine` or `AnimationNodeBlendSpace2D` as the tree root. 4. **Drive transitions from code** via the playback object (`travel`) or by setting blend parameters. 5. **React to clip events** with the `animation_finished` signal and Call Method tracks.
@onready var anim: AnimationPlayer = $AnimationPlayer
func attack() -> void:
anim.play("attack")
await anim.animation_finished # resume after the clip ends
anim.play("idle")@onready var tree: AnimationTree = $AnimationTree
func _ready() -> void:
tree.active = true # the tree drives animation; AnimationPlayer is the source
func set_state(state: StringName) -> void:
# The playback object controls an AnimationNodeStateMachine root.
var sm: AnimationNodeStateMachinePlayback = tree.get("parameters/playback")
sm.travel(state) # transitions using the graph's connections
func _physics_process(_d: float) -> void:
set_state(&"run" if velocity.length() > 5.0 else &"idle")# tree.tree_root is an AnimationNodeBlendSpace2D with idle/run points placed in it.
func update_locomotion(input_dir: Vector2) -> void:
tree.set("parameters/blend_position", input_dir)
# If the blend space is instead a child named "Move" in a blend tree/state machine,
# its parameter is "parameters/Move/blend_position".func pop_in(node: Control) -> void:
node.scale = Vector2.ZERO
node.modulate.a = 0.0
var tw := create_tween() # bound to this node's tree
tw.set_parallel(true) # run the two tweens together
tw.tween_property(node, "scale", Vector2.ONE, 0.2) \
.set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
tw.tween_property(node, "modulate:a", 1.0, 0.2) # sub-property via ":"nothing. Set `active = true` and assign the `anim_player` path.
`"parameters/blend_position"` or `"parameters/playback"`). Nested nodes add their names, e.g. `"parameters/Move/blend_position"`; match the actual tree hierarchy.
also call `AnimationPlayer.play()` for the same tracks — let the tree own playback.
code with `create_tween()` (which returns a `Tween`). They auto-start and free themselves.
node is outside the tree and dies when it is freed. Use `get_tree().create_tween()` for a tween that must keep running while the node is out of the tree.
child transforms whenever it re-sorts. In 4.7+ set `offset_transform_enabled = true` and tween `offset_transform_scale` / `offset_transform_rotation` / `offset_transform_position` instead (visual only by default).
animation. Use `set_loops()` for repetition.
property instead overwrites siblings.
call tracks, `SpriteFrames`/`AnimatedSprite2D`, and Tween easing/chaining/callbacks, read `references/animation-tree-and-tween.md`.
<img src="docs/assets/awesome-gamedev-agent-skills-banner.png" width="820" alt="awesome-gamedev-agent-skills — game-dev skills for AI coding agents.
Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators)…
Implement game audio practice — bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via…
Build game cameras that feel good — 2D follow with a deadzone, look-ahead, smoothing, and level-bounds clamping; 3D third-person…
Plan, generate, source, normalize, and validate cohesive visual game assets. Use for art direction, style bibles, sprites,…
Build branching dialogue and narrative — a node/choice graph with conditions, variables, and localization hooks — and choose…
Design NPC and enemy decision-making with finite state machines, behavior trees, steering behaviors, and A* pathfinding —…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.