【Godot】spine-godotの使い方メモ

spine-godot(Godotエンジンへの Spine 対応版)がだいぶ良さげに動いていたので、かんたんに紹介する記事を書きました

実行ファイルのダウンロード

spine-godotを利用するにはエンジンビルドが必要なのですが、実行ファイルをビルドしたものが提供されているので、少し試すだけなら、spine godotランタイムドキュメント のページからダウンロードするのが早いと思います

macOS版のみの問題点

macOS版は野良実行ファイルは動かせませんので、実行権限を与えて実行する必要があります。

またディスクへのアクセス権を設定しないと、以下のダイアログが出続けてしまう問題があります

いつもなら、このあたりの設定で出なくなりそうなのですが、私の環境では解決策が見つかっていません

本格的に使うときにもう少し調べてみようかと思います

SpineSprite

spineデータを読み込む場合には「SpineSprite」というノードを使う必要があるみたいです

このノードを作成して、インスペクタからリソースを読み込ませると、Spineデータを表示することができます。

対応データ

spine-godotが対応しているのは v4.1以降の Spineデータとなります。それ以前のデータの読み込みは正常にできないようなので注意が必要です。なお、なぜか公式のSpineboyサンプルは v4.1 に変換しても spine-godotでは表示できなかったので、spine-godotに含まれるサンプルを使用した方が良さそうです。

アニメーションをスクリプトで制御する

アニメーションの制御は get_animation_state() でアニメーションを取得し、set_animaton() で再生します

extends Node2D

# SpineSpriteを取得
@onready var spine = $SpineSprite

func _ready() -> void:
	# アニメーションを取得
	var anim = spine.get_animation_state()
	# "run" という名前のアニメーションを ループあり、トラック0 で再生する
	anim.set_animation("run", true, 0)

シグナル

SpineSpriteのシグナルは以下のものが用意されています

  • animation_started: アニメーション開始
  • animation_interrupted: アニメーション変更時
  • animation_ended: アニメーション終了
  • animation_completed: アニメーションループ時
  • animation_disposed: アニメーション破棄時
  • animation_event: ユーザーイベント

Spineからのデータエクスポート

Spineからデータをエクスポートする場合は、必ず v4.1以上を指定します

また、.atlasと.pngを出力するため「パック」にもチェックを入れておきます。

生成された、.atlas / .png / .json (または .skel) をGodotプロジェクト内の同一フォルダに配置するとインポートできるようになります

より詳しい情報

より詳しい情報はサンプルコードやヘルプ、ドキュメントを読みます

サンプルコードはspine-runtimesここからコードをダウンロードして「spine-godot/example」フォルダにあります。

ドキュメントはspine-godot Runtime Documentに公式ドキュメントがあります。

参考ページ