読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

cocos2d 等角タイルマップ

cocos2dで作るiPhone&iPadゲームプログラミング11章

今回は移植なしで本の内容を読んでいく。なので、今日の内容は現在のcocos2dではサポートされていない可能性もある。

等角タイルマップ

菱形のタイルチップを使い、2Dでありながら立体的な奥行きを出せる。

基本原則を決める

プレイヤの手前と奥にオブジェクトを表示するには少なくとも2枚以上のレイヤが必要。ヤシの木と地面など。
cocos2dで等角タイルマップを扱うときはZオーダーを設定するため、地面レイヤにcc_vertexz=-1000、オブジェクトレイヤにcc_vertexz=automaticというプロパティを追加する。

等角タイルマップのプログラミング

直交タイルマップとは異なる部分がある。たとえばAppDelegateにZバッファを扱えるよう設定したり、2D投影モードを設定したりする。

タイルの特定

スクリーン座標のY軸反転と、座標が45度回転していることを考慮して計算する。

等角タイルマップのスクロール

P291

等角タイルマップの端

等角タイルマップと背景の境界をなくすためには等角タイルマップをリサイズして背景部分を通れないタイルで埋める。入れないことがプレイヤーにわかるよう、境界のチップは暗めにすると効果的。
※入れない部分を入れるようには見せかけない。不可能なことをプレイヤーに試させない。

移動可能なプレイヤー

等角タイルマップはタイルのY軸ごとにZ値が異なる。
ゆえにプレイヤーを描画する際はプレイヤーのvertexZも更新する。

衝突

サンプルでは衝突チェック用のレイヤを用意していた。

参考:

cocos2dで作る iPhone&iPadゲームプログラミング

cocos2dで作る iPhone&iPadゲームプログラミング