前回は Rule Tile の 3×3 Box でルールとして設定するマークの意味について紹介しました。

Unity Rule Tile (MirrorXY Single) の配置の例(垂直&水平反転後)
今回は Rule Tile の設定項目 Output メニュー Single, Random, Animation について紹介します。
※ Unity は 2021.3.14f1、TopDown Engine は 3.1.1、2D Tilemap Extras は 2.2.2 です。
※画像では TopDown Engine のサンプルのパレット KoalaTilePalette に含まれているタイルを使用しています。
Rule Tile とは?
Rule Tile は、2D Tilemap Extras に含まれる周囲のタイルとの位置関係で表示する Sprite を動的に変える Scriptable Tile です。
ユーザがルールや Sprite をリストで設定できます。
「このマスは左上の角のマップチップを置いて」といった風に考えてタイルパレットで選択する手間が省け、タイルマップ編集の作業効率が向上します

Unity Rule Tile (Single) でタイルを配置している様子。タイルは TopDown Engine の KoalaTilePalette を使用しています。
Rule Tile は様々な機能があるので、少しずつ紹介していきます。
タイルの設定を Inspector ウィンドウで表示する場合は、 TilePalette ウィンドウで、タイルを選択後、上の灰色の余白で右クリックしてポップアップメニュー [Select Tile Asset] を選んでください。

タイルの設定を Inspector に表示したい場合は、TilePalette でタイル選択後、上の灰色の余白で右クリックメニューSelect Tile Asset を選びます。
Rule Tile の Output の 3 つの選択肢
TopDown Engine のサンプルゲーム KoalaDungeon のタイルパレットの中で同じ Rule Tile を使用しているものを探したところ、Inspector ウィンドウの設定画面が異なるものがありました。
Rule Tile 共通で、 3×3 マスの条件設定はあるのですが、 Output メニューの選択が異なると一部の設定が変わるようです。

Unity Rule Tile (Output=Single) の設定の例

Unity Rule Tile (Output=Random) の設定の例
また、サンプルのパレットにはありませんでしたが、 Output メニューには Single, Random 以外に Animation もありました。
ここからは順番にそれらの Output を選んだ際の設定と、タイルマップにタイルを配置したときの様子を紹介します。
※今回は Single と Random (こちらがメインになります) の説明を行い、 Animation は次回紹介します。
Rule Tile (Output = Single) を使ってみる
前回まで使ってきた Output の選択肢です。
Tiling Rules リストのルール枠で指定した単一の Sprite を条件に合致した場合表示します。

Unity Rule Tile で Output が Single の場合は合致したルールの唯一の Sprite が表示されます。
中心マスのマークによって、回転・反転した画像が表示されることはありますが、Sprite 自体は 1 つに限られています。
Rule Tile (Output = Random) を使ってみる
候補のリストに複数の Sprite を設定し、ルールに合致した場合、その候補のリストからランダムに Sprite がタイルに割り当てられます。

Unity Rule Tile (Single, Random) でタイルを配置している様子。タイル及び画像は TopDown Engine のサンプルパレット KoalaTilePalette のものを使用しています。
Tiling Rules リストの Output を Random に選択したルール枠の下に候補の Sprite を追加するとその中からランダムに画像が選ばれてタイルに割り当てられ表示されます。

Unity Rule Tile の Ouput を Random にした例。候補のSpriteからランダムに選ばれた画像が割り当てられます。
Shuffle 項目
Output で Random を選んだ際に選択できる項目 Shuffle では、ランダムに選ばれた Sprite を、ランダムに 90 度単位の回転や水平・垂直反転させます。
これにより、 90 度回転させた画像をわざわざ用意する必要もなく、見た目のバリエーションを増やせます。

Unity Rule Tile の Output を Random に Shuffle を Rotated にするとランダムに選ばれた画像がランダムに90度単位で回転します。
タイルを配置した後で、 Shuffle の選択肢を変更すると、すでに配置済みのタイルの表示も回転・反転をしたり、何もしない状態に切り替えることができます。

Unity Rule Tile (Single, Random) でタイルを配置した後で Shuffle の選択肢を変えるとタイルの表示も切り替わります。
Noise 項目
前述の Shuffle を切り替えていると、同じ項目を再び選択したときのランダムな向きが同じであることがわかります
ランダムにタイルに Sprite を割り当てますが、そのパターンは決まっているようです。
そのランダムのパターンを変えられるのが Noise 項目です。
小さいとバラツキが少なく、大きいとバラツキが多くなるようです。
これにより、あまり変化が多くないほうが良い場合や、全てのタイルの Sprite が異なるくらい極端な変化をつけたい場合などでランダムな度合を調整できます。

Unity Rule Tile (Single, Random) でNoise を小さくすると同じ画像が選ばれやすく、大きくすると異なる画像が選ばれやすくなりました。

Unity Rule Tile で Output を Random にした場合の Noise によるランダム度合の比較
Rule Tile で Output が Random なルールを追加
Output を Random にすると候補の Sprite をランダムに選び、回転・反転を加えたバラツキのあるタイルマップを作成できます。
さらに、異なるルールを追加すれば、複数の候補の Sprite 画像を 地形に合わせた上で Random に配置することができます。
それにより、同じ地形だけど少しずつタイルマップの画像が異なるより豊かな表現が簡単にできるでしょう。
Rule Tile は前回紹介した通り、Project ウィンドウの右クリックのポップアップメニュー [Create]→[2D]→[Tiles]→[RuleTile] でアセットを作成できます。

Unity 2D Tilemap Extras の Rule Tile を Project ウィンドウのコンテキストメニューCreate→2D→Tilesから選択します。
あとは追加したルールの Output の項目を Fixed から Random に変え、候補の Sprite を追加するだけです。

Output が Random のルールを追加した例
この組み合わせにより、位置関係によって四隅や中心などで最適な Sprite が選ばれ、さらに自然なばらつきを加えたタイルマップを簡単に作ることができます。

Unity Rule Tile (Single, Random) でルールを追加すると位置関係による選択+ランダムで多様なマップを簡単に作れます。

タイルの位置関係に応じて画像を選び、ある程度のばらつきを Random で自動的に行ったタイルマップ作成
今回はここまで
今回は Rule Tile で Output を Random に設定した際の機能について紹介しました。
これと似た機能で重みづけもできる Weighted Random Tile についても以前紹介したのでよろしければそちらもご一読下さい。
- Unity の Weighted Random Tile を使ってみる | Compota-Soft-Press
- Unity の Weighted Random Tile を作ってみる | Compota-Soft-Press
次回は Output を Animation にした場合の機能を実際に作りつつ紹介します。
参照サイト Thank You!
コメント