レベルデザインについて(その3)
前回は Tiled Map Editor にて作成したマップファイルを、 libGDX で読み込み、描画するところまで行いました
今回はマップファイルにオブジェクト情報を追加し、衝突判定を設定したいと思います
まずは、前回作ったマップファイルを Tiled Map Editor で開きます
レイヤーウィンドウにて、「オブジェクト・レイヤーを追加」を選択し、オブジェクトレイヤーを追加します
追加後、タイルレイヤーと同様にレイヤー名をダブルクリックして、日本語から英語に変更します
今回は「objects」に変更しました
次に、追加したオブジェクト・レイヤーを右クリックし、表示されたメニューから「レイヤーの設定」を選択します
選択後、表示される「オブジェクト・レイヤープロパティ」ウィンドウの「色」の項目を選択し、赤色に変更、「OK」ボタンをクリックして設定を反映します
ウィンドウ上部のメニューから「四角形を追加」を選択します
選択後、タイル・レイヤーに描いたブロックに沿ってドラッグ&ドロップを行い、マップオブジェクトを追加します
これを繰り返し、すべてのブロックに対してマップオブジェクトを追加し、完了したらファイルを保存します
最後に libGDX 側にてオブジェクト・レイヤーに追加した情報を読み込みます
libGDX では追加した情報を MapObject インターフェイス、及びそれらを実装した CircleMapObject クラス、 EllipseMapObject クラス、 PolygonMapObject クラス、 PolylineMapObject クラス、 RectangleMapObject クラス、 TextureMapObject クラスが用意されています
RectangleMapObject (libgdx API)
以下のデモでは、マップオブジェクトと Rectangle クラス、及び Circle クラスの衝突判定をおこなっています
マップオブジェクトには今回四角形を使用していますので、 RectangleMapObject クラスとの判定となります
RectangleMapObject クラスのインスタンスからは Rectangle クラスのインスタンスが取得できるため、それとの判定を実装しています
また、わかりやすいように赤線にてマップオブジェクトを描画しています