godot-animation について
Godot 4.7 向けのアニメーションスキルです。AnimationPlayer、AnimationTree、Tween の選び方と制御方法を扱います。キーフレーム、キャラクター状態のブレンド、スプライトシート、コードによる短い演出に対応します。
主な機能
- 01AnimationPlayer によるキーフレーム作成
- 02AnimationTree による状態のブレンドと遷移
- 03Tween によるプロパティ補間
- 042D スプライトシートのアニメーション
- 05アニメーションイベントやメソッドトラックへの応答
活用シーン
- 01待機、歩行、走行状態の切り替え
- 02攻撃アニメーションの再生完了待ち
- 03UI 要素のフェードや拡大縮小
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill godot-animationインストール後、Claude Code で/godot-animationを入力して読み込まれたか確認します。
同梱ファイルreferences/animation-tree-and-tween.md
詳細
Godot Animation (4.x)
適切なアニメーションツールを選んで動かします。AnimationPlayer(クリップ)、AnimationTree
(ブレンド/ステートマシン)、または Tween(短いプロシージャルな動き)を使います。対象は Godot 4.7 です。
使用する場面
- キーフレームアニメーションの再生、歩行/走行/待機状態のブレンド、スプライトシートのアニメーション、またはコードによる UI/オブジェクトのトゥイーン処理に使用します。
使用しない場面: 再生する状態を決める移動のロジック → godot-2d-movement、UI レイアウト(UI のトゥイーン処理ではなく)→ godot-ui-control、シェーダーによるエフェクト → godot-shaders。
基本的なワークフロー
- ツールを選びます:
AnimationPlayer— キーフレームクリップ(トランスフォーム、プロパティ、メソッド呼び出し、オーディオ、さらには他のアニメーション)を作成します。クリップデータの信頼できる唯一の情報源です。AnimationTree— ステートマシンやブレンドスペースを使って、実行時にクリップ間をブレンドして遷移します。クリップを取得するためにAnimationPlayerが必要です。Tween— コード内でプロシージャルな補間を実行します(create_tween())。UI のポップ、フェード、一度きりの動きに最適です。
- 2D スプライトシートの場合:
AnimatedSprite2D+SpriteFramesを使うか、AnimationPlayerでframeプロパティにキーフレームを設定します。 - キャラクターの場合:
AnimationPlayerでクリップを作成してから、AnimationTree(active = true)を追加し、anim_playerを設定して、ツリーのルートとしてAnimationNodeStateMachineまたはAnimationNodeBlendSpace2Dを構成します。 - コードから遷移を動かします。 再生オブジェクト(
travel)を使うか、ブレンドパラメーターを設定します。 - クリップのイベントに反応します。
animation_finishedシグナルとコール/メソッドトラックを使います。
パターン
1. AnimationPlayer:クリップを再生して完了を待つ
@onready var anim: AnimationPlayer = $AnimationPlayer
func attack() -> void:
anim.play("attack")
await anim.animation_finished # resume after the clip ends
anim.play("idle")
2. AnimationTree ステートマシン:状態間を遷移する
@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")
3. ブレンドスペース:2D パラメーターで走行方向をブレンドする
# 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)
4. Tween:UI 要素をフェードして拡大縮小する(コード駆動)
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 ":"
注意点
AnimationTree.activeが false のまま → アニメーションが再生されず、travel()を呼び出しても何も起きないように見えます。active = trueを設定し、anim_playerのパスを割り当ててください。- パラメーターのパスが間違っている。 ブレンド/条件のパスは
"parameters/<NodeName>/..."で、ツリー内のノード名と正確に一致させる必要があります(例:"parameters/playback"、"parameters/Move/blend_position")。タイプミスがあってもエラーにならず、何も起きません。 - AnimationPlayer と AnimationTree が競合する。
AnimationTreeが有効なときは、同じトラックに対してAnimationPlayer.play()も呼び出さないでください。再生はツリーに任せます。 - 3.x の Tween ノードはなくなりました。 4.x では追加できる
Tweenノードはありません。コード内でcreate_tween()を使ってトゥイーンを作成してください(Tweenを返します)。トゥイーンは自動的に開始し、自身を解放します。 - 完了したトゥイーンを再利用する。 トゥイーンは一度だけ実行されます。新しいアニメーションには、再度
create_tween()を呼び出してください。繰り返す場合はset_loops()を使います。 yield/yield(anim, "...")はなくなりました。await anim.animation_finishedを使います。- サブプロパティのトゥイーンではコロンを使います:
"modulate:a"、"position:x"。プロパティ全体をトゥイーンすると、兄弟プロパティが上書きされます。
参考資料
- ステートマシンの遷移/条件、ルートモーション、ワンショット/ブレンドノード、メソッドトラックとコールトラック、
SpriteFrames/AnimatedSprite2D、Tween のイージング/連結/コールバックについては、references/animation-tree-and-tween.mdを参照してください。
関連スキル
godot-2d-movement— アニメーションを選択する速度/状態を提供します。godot-ui-control— Tween でアニメーションさせる UI です。godot-3d-essentials— AnimationTree で動かす 3D キャラクターシーンです。game-ai— アニメーション状態に対応するステートマシンです。
コメント
Markdown 対応