Skip to content

Instantly share code, notes, and snippets.

@takashi1975
Last active August 29, 2015 14:07
Show Gist options
  • Save takashi1975/c6af49c744c39445b454 to your computer and use it in GitHub Desktop.
Save takashi1975/c6af49c744c39445b454 to your computer and use it in GitHub Desktop.
Cocos2d-x v3.2 で Spine を動かす
作成したプロジェクトに含まれる Spine 用のクラスでは実行時にエラーが発生
ググると、Spineのランタイムを置き換えが必要な様子
■準備
~~ 1-1. ~~~
本家のサイトが提供する git からプルもしくはダウンロード
https://github.com/EsotericSoftware/spine-runtimes
~~ 1-2. ~~~
ランタイムの中から必要なのは以下の箇所のファイル (2014/10/05現在最新時)
spine-c
+- include ... .hファイル
+- src
+- spine ... .cファイル
spine-cocos2dx
+- 3
+- src
+- spine ... .cpp/.h ファイル
~~ 1-3. ~~~
まずは自分のプロジェクトから {my_project}/cocos2d/cocos/editor-support/spine フォルダをリネーム (うまくいったら削除)
~~ 1-4. ~~~
{my_project}/cocos2d/cocos/editor-support/spine フォルダを作ってそこに上記のソースファイルを全部コピー
■iOS編
~~ 2-1. ~~~
XCode でプロジェクトを開き、自分のプロジェクトの中にある cocos2d_libs.xcodeproj を開いて editor-support/spine をいったん削除
~~ 2-2. ~~~
editor-support の上で右クリックし、[Add File to cocos2d_libs.xcodeproj ...] を選択
用意しておいた spineフォルダを選択し、ダイアログ下部にある [Add to targes] のリストから 以下をチェック
・cocos2dx Mac
・cocos2dx iOS
(targetにチェックが漏れているとコンパイルが通らない。後でチェックできるけど、追加した全ファイルで操作する必要があるのでめんどくさい)
~~ 2-3. ~~~
Resources に Spine のサンプルデータをコピー(gobulins)し、HelloWorld に以下のサンプルコードを記述
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto center = Point(visibleSize) * 0.5f;
{
SkeletonAnimation * skeleton = SkeletonAnimation::createWithFile("goblins-ffd.json", "goblins-ffd.atlas", 0.6f);
skeleton->setPosition(center);
skeleton->setSkin("goblin");
this->addChild(skeleton);
}
~~ 2-4. ~~~
iOS実機転送 (エラーがなければ画面にゴブリンが現れる)
■Android編
~~ 3-1. ~~~
spineフォルダに Android.mk ファイルが必要なので、以前の spineフォルダから Android.mk ファイルをコピーし、LOCAL_SRC_FILES部分を編集
変更の大部分が cpp -> c になるのと、構成ファイルが異なるので以下のような記述が楽
C_FILES := $(shell find $(LOCAL_PATH) -name *.c)
CPP_FILES := $(shell find $(LOCAL_PATH) -name *.cpp)
LOCAL_SRC_FILES := $( C_FILES:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)
~~ 3-2. ~~~
proj.android にある Android.mk を編集
(以下の行がコメントになっているので先頭の # を消す)
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
$(call import-module,editor-support/spine)
~~ 3-3. ~~~
./build_native.py を実行して libcocos2dcpp.so を作成
~~ 3-4. ~~~
Eclipse でプロジェクトを開き、Android実機へ転送して確認
■ 参考
詳しくは以下のサイトがとても参考になりました ^^;
http://blog.shamebird.com/cocos2d-x-3-2-spine-dong-kanai/
http://qiita.com/akerusoft/items/63f23d1387275af2f894
#########################################################
# Spine/Android.mk
#########################################################
#--------------------------------------------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#--------------------------------------------------------
LOCAL_MODULE := spine_static
LOCAL_MODULE_FILENAME := libspine
#--------------------------------------------------------
#コンパイル対象 (フォルダ以下の全てのソースファイルをコンパイル対象)
C_FILES := $(shell find $(LOCAL_PATH) -name *.c)
CPP_FILES := $(shell find $(LOCAL_PATH) -name *.cpp)
LOCAL_SRC_FILES := $( C_FILES:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)
#--------------------------------------------------------
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/..
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \
$(LOCAL_PATH)/..
#--------------------------------------------------------
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
#--------------------------------------------------------
include $(BUILD_STATIC_LIBRARY)
#--------------------------------------------------------
$(call import-module,.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment