Cocos2d-x3.4でSpineを使う

poowww(プログラマー)
がんばります。

日本だとSpineよりもSpriteStudioのほうが流行ってそうですが、それはそれ。
Spineを使います。
環境はCocos2d-x3.4です。

Spineファイルの用意

Spineのほうで下記のような3つファイルを書き出します。
raptor.atlas
raptor.json
raptor.png

これらのファイルはspineのランタイムサンプルから借りてきました。
https://github.com/EsotericSoftware/spine-runtimes

Spine自体の使い方は弊社デザイナー陣に聞いてください。
優しく教えてくれるはずです。はずです。

組み込む

では実際に組み込んでいきます。

まず先ほどの3つのファイルをResourcesフォルダに突っ込みます。
そして下記のようにインクルードして

1
#include <spine/spine-cocos2dx.h>

必要な場所でこんな感じに。

1
2
3
auto spine = spine::SkeletonAnimation::createWithFile("raptor.json", "raptor.atlas");
spine->setAnimation(0, "walk", true);
addChild(spine);

これでアニメーションが再生されるはずです。
簡単ですね。

注意

使っててハマったことのメモ。

・デフォルトコンストラクタの実装がない

びっくりしたのですが、Cocos2d-x3.4のspine::SkeletonAnimationにはデフォルトコンストラクタの宣言だけしかなくて実装がありませんでした。
継承などでデフォルトコンストラクタを呼ばないように注意してください。

・updateのオーバーライド時

継承時にupdateをオーバーライドしたときにspine::SkeletonAnimation::updateも呼んでおかないとアニメーションが映りません。
当たり前といえば当たり前なのですが、躓く人もいるんです。

・getContentSizeの戻り値が(0,0)

spine::SkeltonAnimationのgetContentSizeは戻り値が(0.0)です。
サイズが取得できません。
必要な場合は・・・他の方法を用意しましょう。