前回は、Unity のアセット TopDown Engine のサンプルゲームの一つ KoalaDungeon の床や壁など種類別のタイルマップ特有のコンポーネントを紹介しました。
今回は、その続きとして、まだ紹介していない種類別のタイルマップ特有のコンポーネントや、タイルマップではないけれどもタイルマップ群と同じ階層にある Props ゲームオブジェクトについて紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1 です。
WallsShadow タイルマップ
Walls タイルマップの壁のタイルの下側に影をつけるためのタイルマップです。
MMTilemapShadow コンポーネント
対象のタイルマップのタイル配置を参照に、そのタイルの下側に影をつけます。
ゲートの影は、ゲートの絵の一部として描かれていました。
しかし、WallsShadow タイルマップで表現される Walls タイルマップの壁たちの影は MMTilemapShadow コンポーネントによって作られています。
WallsShadow ゲームオブジェクトの有効性を切り替えると、グリッド線が下に少しずれ、壁の下側に影ができました。
WallsShadow タイルマップは Inspector ウィンドウの Transform コンポーネントの position.y = -0.25 に設定し、他のタイルマップよりも -0.25 ほど下にずらしているようです。
コードの内容は、 ReferenceTilemap プロパティに指定された Walls (壁だけ配置されている) タイルマップに配置されたタイルをコピーして、アタッチされているWallsShadow タイルマップに設定しているようです。
そのコピーしたタイルを -0.25 下方向にずらして配置して表示する際に、KoalaWallsShadow という灰色の Sprite/Default マテリアルを用いて描画することで、コピーしたタイルの色味を変えて影のように表示しているようです。
参照元のタイルマップを変更した場合、 UpdateShadows ボタンで再度タイル群をコピーして影用のタイルマップの更新ができます。
WallsShadow タイルマップのタイル群は、Walls タイルマップのタイル群と形は同じで、色合いが薄暗くなっています。
WallsShadow タイルマップが -0.25 下にずれて表示され、TilemapRenderer コンポーネントの Sorting Layer の関係で Walls の方が手前に表示されるので、床にはみでた下側 0.25 マス分のみが影のように表示されています。
Holes タイルマップ
Ground タイルレイヤーの床に通行不能の穴(床のタイルを消しています)をあとから設定するためのタイルマップです。
TilemapCollider2D コンポーネント
Ground, Walls の TilemapCollider2D コンポーネントとは異なり、 is Trigger が有効になっていて、 Used By Composite はチェックされていません。
この設定では、Ground, Walls のように CompositeCollider2D コンポーネントにコライダーの管理を委譲せず、自身でトリガー判定を行います。
※詳しくは前回の Ground の項目を参照ください。
Rigidbody2D コンポーネント
Rigidbody2D コンポーネントは Ground, Walls と同じ設定です。
※詳しくは前回の Ground の項目を参照ください。
CompositeCollider2D コンポーネント
CompositeCollider2D コンポーネントは Ground の設定と同じです。
※詳しくは前回の Ground の項目を参照ください。
MMTilemapBoolean コンポーネント
BooleanClean ボタンを押すと、TilemapToClean で指定した Tilemap のタイルを null(タイルなし) に変えます。
null に変えられる対象は、このゲームオブジェクト (Holes) が持つ Tilemap で何らかのタイルを設定した場所です。
Holes の Tilemap のある座標にタイルがあった場合、TilemapToClean (サンプルでは Ground) のタイルマップの同じ座標にタイルがあれば、 null に置き換えます。
Holes ゲームオブジェクトのみ有効にした際のシーンでは、床を穴に場所を指定するためタイルが配置されています。
このタイルの位置の Ground タイルマップのタイルは null に置き換えられます。
Props (タイルマップではありません)
Props には松明や壺、コインといったマップに配置されるものがまとめられています。
Grid 直下にありますが、Tilemap コンポーネントを持たないため、Grid のマス目の影響は受けません。
松明はスプライトのアニメーションを表示する機能であったり、コインはコインが増える処理を行う機能がついていたりと、種類に応じて異なるコンポーネント構成のゲームオブジェクトが配置されています。
まとめ
タイルマップを実現するためには Grid, Tilemap, TilemapRenderer コンポーネントが必要でした。
また、壁などの当たり/トリガー判定のための Tilemap に特化したコライダー TilemapCollider2D コンポーネントや、 TopDown Engine 独自のコンポーネントが使われていることもわかりました。
コメント