レベルデザインについて(その3)

前回は  Tiled Map Editor にて作成したマップファイルを、 libGDX で読み込み、描画するところまで行いました

今回はマップファイルにオブジェクト情報を追加し、衝突判定を設定したいと思います

まずは、前回作ったマップファイルを  Tiled Map Editor で開きます

レイヤーウィンドウにて、「オブジェクト・レイヤーを追加」を選択し、オブジェクトレイヤーを追加します

 

f:id:picopicolab:20151116215722p:plain

 

追加後、タイルレイヤーと同様にレイヤー名をダブルクリックして、日本語から英語に変更します

今回は「objects」に変更しました

 

f:id:picopicolab:20151116220247p:plain

 

次に、追加したオブジェクト・レイヤーを右クリックし、表示されたメニューから「レイヤーの設定」を選択します

 

f:id:picopicolab:20151116221039p:plain

 

選択後、表示される「オブジェクト・レイヤープロパティ」ウィンドウの「色」の項目を選択し、赤色に変更、「OK」ボタンをクリックして設定を反映します

 

f:id:picopicolab:20151116221148p:plain

 

ウィンドウ上部のメニューから「四角形を追加」を選択します

 

f:id:picopicolab:20151116221503p:plain

 

選択後、タイル・レイヤーに描いたブロックに沿ってドラッグ&ドロップを行い、マップオブジェクトを追加します

 

f:id:picopicolab:20151116221716p:plain

 

これを繰り返し、すべてのブロックに対してマップオブジェクトを追加し、完了したらファイルを保存します

 

f:id:picopicolab:20151116221851p:plain

 

最後に libGDX 側にてオブジェクト・レイヤーに追加した情報を読み込みます

libGDX では追加した情報を MapObject インターフェイス、及びそれらを実装した CircleMapObject クラス、 EllipseMapObject クラス、 PolygonMapObject クラス、 PolylineMapObject クラス、 RectangleMapObject クラス、 TextureMapObject クラスが用意されています

 

MapObject (libgdx API)

CircleMapObject (libgdx API)

EllipseMapObject (libgdx API)

PolygonMapObject (libgdx API)

RectangleMapObject (libgdx API)

TextureMapObject (libgdx API)

 

以下のデモでは、マップオブジェクトと Rectangle クラス、及び Circle クラスの衝突判定をおこなっています

マップオブジェクトには今回四角形を使用していますので、  RectangleMapObject クラスとの判定となります

RectangleMapObject クラスのインスタンスからは Rectangle クラスのインスタンスが取得できるため、それとの判定を実装しています

また、わかりやすいように赤線にてマップオブジェクトを描画しています

 

f:id:picopicolab:20151116224036g:plain

 

gist.github.com