昨日、タイルマップを作成している時に悩んだことを書きます。 cocos2dxでTiledで作成したタイルマップを利用する際の注意点があります。 それは、Tag(タグ)です。
TagがCCTMXLayerに自動的に割り振られる?
おそらくなんですがCCTMXTiledMapクラスを使いタイルマップを利用する際に、CCTMXLayerに自動的にタグが割り振られています。
Tiledでは、以下のように複数CCTMXLayerを利用します。 また、PlayerやEnemyなどのオブジェクトも配置できます。
ここからは、自分が検証して間違いないと思うのですが、レイアーには0から順番にタグが割り振られているみたいです。
オブジェクトにタグを付ける時には注意しよう
以上のようなことを考えての注意点は、レイアーではなく、オブジェクト側にあります。 私はPlayerを取り出すために、専用のタグを設置していたのですが、これがレイアーのタグと被ってしまった上手く動作ができていませんでした。 [c]
//このような感じでタグを割り当ててました enum{
kTagEnemy = 1,
kTagItem = 2,
kTagPlayer = 3,
kTagPerson =4,
}; [/c]
ですので、タグを付ける際には、もう少し大きい数字を割り振るなどの工夫が必要です。