cocos2d-xの勉強してみた

ゲーム開発エンジン使ってアプリを作ってみたいなとは以前から考えていましたが、今回cocos2d-xの勉強をしてみました。

他にもUnityがあって、しかもそちらの方が情報量も書籍の数も多いです。にも関わらず、なぜcocos2d-xを選んだかというと、私には3次元がややこしかったからです。UnityはLive2Dと連携させるのにちょっと触りましたが、私には合いそうもないというのが第一印象でした。cocos2d-xなら2次元だから比較的入りやすいんじゃないかなと思ったのです。

実際にやってみたら、cocosは情報が少ないという意味でハードルが高くて困っていますけどね。もっとも、Unityもハウツー本使って勉強してみると意外と簡単にできるかもしれません。いずれやってみようと思います。

今回勉強するにあたって利用した本はこちらです。

書籍で扱われているcocos2d-xのバージョンはは3.2ですが、私は3.6(勉強開始当初の最新、現在は3.7が出ている)でやりました。

Android Studioとの連携

Android Studioでcocosのプロジェクトを開くにはどうしたらいいかという問題ですが、cocos2d-xのバージョン3.7からAndroid Studio用のプロジェクトが作成されるようになっています。ですので、3.7を使えば解決されます。さよならEclipse。

といっても、あくまでプロジェクトが開けるというだけで、Android Studioだけを使ってC++のコーディングなども含めて開発していけるわけではありません(多分)。素直にMacならXcode使ってiOS用に作っていく、WindowsならVisual Studio使ってWindows Phone向けで作っていくのがいいと思います。(両者であればプロジェクトを開く→実行する→ちゃんと動くので)

Android Studio使って進めていきたかったのですが、今回はcocos2d-xの勉強を優先することにしました。

3.6で本の内容をひと通りやってみて

基本的には本に書いてある内容は、バージョン3.6でもそのまま動きます。

ただ1点だけ、5章のP204ページにあるコードは修正しないと動きませんでした。

auto properties = _tiledMap->getPropertiesForGID(gid).asValueMap();

このasValueMap()のところの型チェックでプログラムが止まってしまいます。これはcocos2d-xのバージョンによる問題ではなく、Tiled Map Editorのバージョンが違うせいで動かなかったのかもしれません(本のTiled Map Editorのバージョンは0.9.1、私が使ったのは0.12.3)。

auto property = _tiledMap->getPropertiesForGID(gid);
if (property.isNull() || property.getType() != Value::Type::MAP) {
    return nullptr;
}
auto properties = property.asValueMap();

一部、本の通りにやっても画面にうまく表示されない箇所があるにはあるのですが、これはcocos2d-xのバージョンによる問題なのかは分かりません。

6章のCocos Studioのあたりは参考程度に

これは本のせいではありませんが、第6章のCocos Studioを使うあたりの話はそのまま利用できませんでした。というのも、本で使っているCocos Studio1.6が手に入らなかったからです。

Read full post gblog_arrow_right