前回は、Unity のアセット TopDown Engine のサンプルゲームの一つ KoalaDungeon で使われているパレット KoalaTilePalette の中にあった Weighted Random Tile を使ってみました。
Weighted Random Tile は 2D Tilemap Extras に含まれている Scriptable Tile の一つです。
指定したスプライト群の中から重みづけに応じてランダムにスプライトを選択し、タイルマップを塗るだけで、ランダムに絵柄が異なったタイルを配置することができました。
今回は、実際に独自のゲーム製作で活用できるように、Weighted Random Tile の作り方を紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1、2D Tilemap Extras は 2.2.2 です。
Weighted Random Tile を作る
スプライトの準備
Weighted Random Tile は、ランダムに選ばれたスプライトが割り当てられたタイルをタイルマップに配置します。
そのため、スプライトをいくつか準備しておく必要があります。
今回は分かりやすく数字のスプライトにしました。
これを Unity プロジェクトの任意のフォルダに追加し、Inspector ウィンドウで Sprite として設定します。
Texture Type を Sprite (2D and UI) に変更すると、下の項目も変わります。
今回は一枚の画像の中に9枚のスプライトが含まれているので Sprite Mode を Multiple に設定します。
Pixels Per Unit はサンプルの KoalaTilePalette に合わせ 16 にします。
Filter Mode はドット絵に適した Point (no filter) にしました。
設定ができたら [Sprite Editor] ボタンで Sprite Editor ウィンドウを開きます。
Sprite Editor ウィンドウを開き、 左上の [Slice] プルダウンリストを出し、 Type は [Grid By Cell Size] を選び、 Pixel Size を スプライト 1 枚のサイズ 16 × 16 に設定し、[Slice] ボタンを押して 9 枚のスプライトに分割します。
Project ウィンドウで、ファイルの右側のアイコンを押すと、分割されたスプライトが確認できます。
これで Weighted Random Tile の作成に用いるスプライトが準備できました。
Weighted Random Tile アセットの作成
Project ウィンドウのフォルダの余白で右クリックし、ポップアップメニュー[Create]→[2D]→[Tiles]→[Weighted Random Tile]を選択します。
Project ウィンドウに「New Weighted Random Tile」アセットが作成されました。
※ New を Test1 にリネームしました。
Inspector ウィンドウをみると Number of Sprites が 0 なので、スプライトと Weight (選ばれやすさの重みづけ) を 設定する枠が 1 つもありません。
Weighted Random Tile アセットの設定
Weighted Random Tile アセットを新規作成したので、Sprite と Weight (選ばれやすさの重みづけ) を設定します。
設定するための枠を確保するため Inspector ウィンドウの Number of Sprites を 0 から追加するスプライトの個数の 9 に変更します。
個数を変更すると、その個数分の空の要素が作られました。
Sprite の枠に、先ほど作成した Sprite を割り当てます。
選ばれやすさの重みづけを設定する Weight は Sprtite に書いた数字と同じにしました。
1~9 までの Sprite 画像を設定し、Weight にはそれぞれの画像の数値を選ばれやすさの重みづけとして設定しました。
作成した Weighted Random Tile アセットを Project ウィンドウから Tile Palette ウィンドウのパレット領域の任意のマスにドラッグ&ドロップして、タイルを登録します。
これで、サンプルのタイルパレットで独自のタイルを使えるようになりました。
作った Weighte Random Tile を使ってみる
タイルパレットに登録した Weighted Random Tile で選択し、ペイントブラシ・塗りつぶし・矩形ツールでタイルマップにタイルを配置することができました。
Weight が大きい方が選ばれやすいので、1 の Sprite は少なく、 9 の Sprite が多く選ばれています。
Weighted Random Tile の Color を変更すると、タイルの色、スプライトの全体的な色味を変えることもできます。
Weighted Random Tile アセットを複製して、色味をかえて、暗いタイルや、少し緑色っぽいタイルを作っても良いでしょう。
Collider Type では、作成するタイルのコライダーの形状を選択できます。
None の場合はコライダーは作られません。
Sprite の場合は Sprite に基づいた形状、 Grid の場合は四角形や六角形などのタイルマップのマスの形状に応じてコライダーが作成されます。
参照:Tilemap Collider 2D – Unity マニュアル
今回はここまで
前回使ってみた Weighted Random Tile を独自に作ることができました。
次回は KoalaTilePalette にあったもう一つの Scriptable Tile 「RuleTile」を紹介します。
コメント