Cocos 2 d-xはBox 2 Dと組み合わせてAndroidゲームの構成方法を開発

4602 ワード

まずcreate-android-projectを通過します.shスクリプトは新しいcocos 2 d-x for androidエンジニアリングを作成します.なお、このスクリプトを実行する前にそのスクリプトを編集してNDK_を設定する必要があるROOTとANDROID_SDK_ROOTの2つの変数の値(スクリプトファイルの一番前の行).NDK_ROOT変数は、コンピュータ上のandroid ndkのインストール場所を指定します.ANDROID_SDK_ROOT変数は、コンピュータ上のandroid sdkのインストール場所を指定します.
工事が完了すると、create-android-project.sh同じディレクトリの下に新しいプロジェクトフォルダが表示されます.ここでは、Box 2 DTestというプロジェクトを構築したばかりだと仮定します.工程目録機構は以下の通りである.
                Box2DTest
                        --android
                        --Classes
                        --Resource
Classesフォルダの下には主にC++ソースファイルがあります.このフォルダはあなたが主に論理を書く場所です.Resourceフォルダは、画像素材、サウンドファイルなどのリソースファイルをこのフォルダの下に置く必要があります.もちろん、このログはcocos 2 d-xの入門ではありません.cococos 2 d-xでBox 2 Dをどのように使うかということですので、ここではandroidフォルダを主に見ています.
Androidフォルダの下には標準的なandroidプロジェクトがあります.Eclipseでは、このプロジェクトを簡単にインポートして実行できます.C++コードを作成したらandroidフォルダの下のbuild_を実行します.native.shスクリプトは、cococos 2 d-xエンジンや他のライブラリとともに、androidプログラムがjniで呼び出すためにsoファイルにコンパイルすることができます.
デフォルトのcococos 2 d-x for androidエンジニアリングでは、Box 2 D物理エンジンライブラリはエンジニアリングに導入されていません.私たちのプログラムでBox 2 Dエンジンを使用する場合は、コンパイルスクリプトをいくつか設定する必要があります.まず、デフォルトのcococos 2 d-x for androidエンジニアリングにどのようなコンパイルスクリプトがあるかを見てみましょう.
                Box2DTest
                        --android
                                --jni
                                        --Android.mk
                                        --Application.mk
                                        --helloworld
                                                --Android.mk
mkファイルはAndroid NDKで使用されているmake fileです.標準的なcococos 2 d-x for androidエンジニアリングのデフォルトには、C++コードをコンパイルする際に重要な役割を果たす3つのmkファイルがあります.自分のプロジェクトでBox 2 D物理エンジンを使用するには、この3つのmkファイルを編集する必要があります.そうしないと、コンパイルできません.
まずはBox 2 DTest/android/jni/APplication.mkファイル.ここで注目すべきはAPPですMODULESという変数です.この変数の後ろの値は、コンパイルするモジュールの名前を指定します.デフォルトは次のとおりです.
               
 APP_MODULES := cocos2d box2d cocosdenshion game_logic game

ここでは、C++コードをコンパイルすると、Box 2 Dモジュールがsoライブラリファイルにコンパイルされるように、Box 2 Dモジュールを追加する必要があります.加入後は次のようになります.
              
 APP_STL := stlport_static
                APP_CPPFLAGS += -frtti
               APP_MODULES := cocos2d box2d cocosdenshion game_logic game

それからBox 2 DTest/android/jni/Androidです.mkファイル.このファイルはsubdirsという変数をチェックする必要があります.この変数の値は、いくつかの共通ライブラリのヘッダファイルのディレクトリの場所を指定します.この変数では、Box 2 Dのライブラリディレクトリが格納されていることを確認する必要があります.追加後の完全なsubdirs変数の付与文は、次のとおりです.
            LOCAL_PATH := $(call my-dir)
            include $(CLEAR_VARS)

           subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \
           Box2D \
           cocos2dx \
           CocosDenshion/android \
	))
       subdirs += $(LOCAL_PATH)/../../Classes/Android.mk                   $(LOCAL_PATH)/helloworld/Android.mk

       include $(subdirs)

次はBox 2 DTest/android/jni/helloworld/Androidです.mkファイル.このファイルでは主にLOCALを編集します.C_INCLUDES変数.この変数は、C++ソースコードのincludeのヘッダファイルの検索場所を指定します.デフォルトのLOCAL_C_INCLUDES割り当ては次のとおりです.
                LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx\
                    $(LOCAL_PATH)/../../../../cocos2dx/platform\
                    $(LOCAL_PATH)/../../../../cocos2dx/include\
                    $(LOCAL_PATH)/../../../../CocosDenshion/include\
                    $(LOCAL_PATH)/../../../Classes
デフォルトのLOCAL_C_INCLUDESはBox 2 Dのヘッダファイルディレクトリを入れていません.この場合、自分のC++ソースコードにBox 2 Dを導入するとコンパイルできません.簡単な方法は、次の2つのパスを追加することです.
 
 LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game

LOCAL_SRC_FILES := main.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \
                    $(LOCAL_PATH)/../../../../cocos2dx/platform \
                    $(LOCAL_PATH)/../../../../cocos2dx/include \
                    $(LOCAL_PATH)/../../../../ \
                    $(LOCAL_PATH)/../../../../Box2D \
                    $(LOCAL_PATH)/../../../Classes

LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/$(TARGET_ARCH_ABI)) \
                -lcocos2d -llog -lgame_logic \
                -lbox2d 
            
include $(BUILD_SHARED_LIBRARY)

この2つのパスを加えた後,我々のC++ソースコードにBox 2 Dライブラリを導入するには,C++ソースコードにこのような文を加えるだけでよい.
                #include  "Box2D/Box2D.h"
これにより、cococos 2 dエンジンがもたらした開発の便利さを享受しながら、Box 2 D物理エンジンがもたらした開発の楽しさを享受することができます.