Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Animate in Godot 4.x three ways: AnimationPlayer for keyframed clips (incl. call and signal 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.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 3% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 52% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 35% | 0% |
| case-09 | ✓→✓ | = Same ✓ | 61% | 0% |
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.
AnimationPlayer — author keyframed clips (transforms, properties, method calls,audio, even other animations). The source of truth for clip data.
AnimationTree — blend and transition between those clips at runtime with a statemachine and/or blend spaces. Needs an AnimationPlayer to pull clips from.
Tween — fire-and-forget procedural interpolation in code (create_tween()); idealfor UI pops, fades, and one-off moves.
AnimatedSprite2D + SpriteFrames, or keyframe theframe property in an AnimationPlayer.
AnimationPlayer, then add an AnimationTree(active = true), set its anim_player, and design an AnimationNodeStateMachine or AnimationNodeBlendSpace2D as the tree root.
travel) or by setting blendparameters.
animation_finished signal and call/method tracks.gdscript@onready var anim: AnimationPlayer = $AnimationPlayer func attack() -> void: anim.play("attack") await anim.animation_finished # resume after the clip ends anim.play("idle")
gdscript@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")
gdscript# Root is an AnimationNodeBlendSpace2D named "Move" with idle/run points placed in it. func update_locomotion(input_dir: Vector2) -> void: # Parameter path = "parameters/<node name>/blend_position". tree.set("parameters/Move/blend_position", input_dir)
gdscriptfunc 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 ":"
AnimationTree.active left false → nothing animates and travel() appears to donothing. Set active = true and assign the anim_player path.
"parameters/<NodeName>/..." andmust match the node names in the tree exactly (e.g. "parameters/playback", "parameters/Move/blend_position"). A typo silently no-ops.
AnimationTree is active, don'talso call AnimationPlayer.play() for the same tracks — let the tree own playback.
Tween node to add in 4.x; create tweens incode with create_tween() (which returns a Tween). They auto-start and free themselves.
create_tween() again for a newanimation. Use set_loops() for repetition.
yield/yield(anim, "...") is gone. Use await anim.animation_finished."modulate:a", "position:x". Tweening the wholeproperty instead overwrites siblings.
call tracks, SpriteFrames/AnimatedSprite2D, and Tween easing/chaining/callbacks, read references/animation-tree-and-tween.md.
godot-2d-movement — supplies the velocity/state that selects animations.godot-ui-control — UI that Tweens animate.godot-3d-essentials — 3D character scenes driven by AnimationTree.game-ai — state machines that mirror animation states.Other measured skills in the registry, with their headline benchmark lift.