【cocos2d-x】TileMapを使ってマップを表示する【RPG風】
こんにちは、クマガイです。 やっと雨が止みましたが、既に月曜日です。 今日はcocos2d-xでTileMapクラスを使ってRPG風のマップを表示します。 表示するマップは前回の【Tiled】マップデータを作る話【cocos2d-x】で作成した.tmx形式のマップデータを使用します。 ソースコードはcocos2d-x v3.0 セットアップ直後のHelloWorldSceneを使います。 セットアップにはCocoa部さんの記事を参考にさせて頂きました。 (参考:http://cocoabu.com/cocos2dxv3rc) 予めFinderでcocos2dxプロジェクトのResourcesフォルダにリソースを追加しておきます。
Xcodeからプロジェクトにリソースを追加します。
下に記載してあるソースコード上では.tmxファイルしか参照していないように見えますが.tmxファイル内で タイルセットの元画像を参照しているのでそちらも一緒に追加します。 HelloWorldScene.cppのHelloWorld::init()部分を次のように書き換えます。
できたらビルドして実行。 するとこんなエラーでアプリが強制終了
"ocos2d: Get data from file(/Users/(ユーザー名)/Library/Application Support/iPhone Simulator/7.1/Applications/0AC95923-E869-4367-B616-D0489556EA06/SampleProject iOS.app/Resources/test.png) failed! (lldb) "
タイルセットの画像が参照できていないようです。
エラー文のパスを確認するとResources/test.pngとなっているので一見あっているように見えますが、以前の記事(【Xcode】黄色のフォルダーと青色のフォルダーの違いについてまとめる話)で書いたようにXcode側のResourceフォルダが黄色になってるのでその下にあるtest.pngはルートディレクトリのファイルとして扱われているわけです。
なのでResourceフォルダを青に直せばいいようにも思いますが、それをすると他のリソースのパスがおかしくなる恐れがあるので今回はtestmap.tmx側を修正します。.tmxはxml形式なのでXcodeからそのまま編集できます。
上のように編集すると一応動くようになりますが、もっと綺麗なやりかたもありそう。。。 そして再びビルドすると。
Tiledで作ったマップが表示されました。 このマップの使い方はまた次回以降に紹介したいと思います。