Godot入門:AnimationPlayerの使い方と活用法

はじめに

キャラクターが歩いたり、ジャンプしたり、UIがスッと現れたり消えたり。こうした動きを実装するのがAnimationPlayerです。

Godot 4では、キーフレームアニメーション(時間軸に沿ってプロパティを変化させる)を簡単に作成・再生できます。

この記事では以下を学べます:

  • AnimationPlayerの基本的な使い方
  • アニメーションの再生・停止制御
  • 複数のアニメーションを管理する
  • カットシーンやUIアニメーションへの応用




AnimationPlayerの基本構成
AnimationPlayerでアニメーションを管理し、タイムラインでキーフレームを編集

AnimationPlayerとは?

AnimationPlayerは、キーフレームアニメーションを再生・管理するノードです。

時間軸に沿ってノードのプロパティ(位置・回転・色・スケールなど)を変化させ、スムーズなアニメーションを実現します。

継承ツリー:


AnimationPlayer
  ↑
AnimationMixer
  ↑
Node
  ↑
Object

AnimationPlayerはAnimationリソース(.anim形式)を複数保持でき、スクリプトからplay()メソッドで再生できます。

このノードを使うべき場面

使う場面:

  • キャラクターのスプライトアニメーション(walk、jump、idle)
  • ゲームUIの演出(ボタン点灯、ウィンドウのスライドイン)
  • カットシーンやストーリー演出
  • ドア開閉、トラップ発動などの時間経過アニメ
  • エフェクトの表示・消失

使わない場面:

  • シンプルな移動だけ → スクリプトのPrが十分
  • 複雑なステートマシン管理 → AnimationTreeを使う

主なプロパティと機能

プロパティ/メソッド 型・戻り値 説明
current_animation String 現在再生中(または最後に再生した)アニメーション名
speed_scale float 再生速度(1.0が通常速、0.5で半速、2.0で2倍速)
autoplay String ノード初期化時に自動再生するアニメーション名
play(name) void 指定のアニメーションを再生開始
stop() void 再生を停止(ポーズ状態)
is_playing() bool 現在アニメーション再生中かどうかを判定
get_animation_list() PackedStringArray 保持しているすべてのアニメーション名を配列で取得
animation_finished Signal アニメーション再生終了時に発火するシグナル

コード例1:基本的なアニメーション制御


extends Sprite2D

@onready var animation_player = $AnimationPlayer

func _ready():
	# autoplayで自動再生する場合は不要
	# animation_player.play("idle")
	pass

func _process(_delta):
	# 入力に応じてアニメーション切り替え
	if Input.is_action_pressed("ui_right"):
		if animation_player.current_animation != "walk":
			animation_player.play("walk")
	elif Input.is_action_pressed("ui_accept"):
		animation_player.play("jump")
	else:
		if animation_player.current_animation != "idle":
			animation_player.play("idle")

コード例2:アニメーション終了を検知して次の処理


extends Control

@onready var animation_player = $AnimationPlayer

func _ready():
	# animation_finished シグナルに接続
	animation_player.animation_finished.connect(_on_animation_finished)

func play_cutscene():
	animation_player.play("opening_scene")

func _on_animation_finished(anim_name: StringName) -> void:
	if anim_name == "opening_scene":
		print("オープニングアニメーション完了")
		# 次のシーンに遷移するなど
		get_tree().change_scene_to_file("res://scenes/main.tscn")




アニメーションエディタでキーフレームを編集
タイムラインでキーフレームを挿入・編集し、滑らかな動きを作成

もっと使いこなす:カスタマイズできるパラメータ

パラメータ 設定値の例 用途
speed_scale 0.5, 1.0, 2.0 スローモーション(0.5)や高速実行(2.0)を実装
autoplay "idle" など ノード初期化時に自動再生するアニメーション
Easing(イージング) ease()関数で制御 キーフレーム間の補間方法を制御(linear, ease_in, ease_out など)
Blend Shapes 複数のアニメーション同時再生 異なるアニメーションを重ね合わせて再生(上半身と下半身を独立制御など)
animation_finishedシグナル 接続して関数実行 アニメーション終了後に自動的に次の処理を実行

まとめ

一言要約:AnimationPlayerは、キーフレームアニメーションを簡単に作成・再生できるノードで、ゲーム内の各種演出に欠かせません。

ポイント:

  • アニメーションエディタでタイムラインにキーフレームを挿入する
  • play()is_playing()で再生制御、speed_scaleで速度調整
  • animation_finishedシグナルで、アニメーション終了後の処理を定義

次回予告:次はAnimationTreeを解説します。複数のアニメーションの状態遷移を効率的に管理する方法が分かります。

シリーズ:Godot 4 ノード解説

  • 001-040: 基本ノード(準備中)
  • 041:StaticBody2D
  • 042:TileMapLayer
  • 043:AnimationPlayer
  • 044:AnimationTree
  • 045:AudioStreamPlayer
  • 046:AudioStreamPlayer2D
  • 047:GPUParticles2D
  • 048:CPUParticles2D
  • 049:Line2D
  • 050:CanvasLayer

この記事はGodot 4.xをもとに執筆しています。

コメント