UnityのTilemap 徹底まとめ⑧ | Rule Tileとは?Tilemapで地面を自動的につなげる方法
UnityでTilemapを使ってステージを作っていると、地面の端や角をきれいにつなげたい場面があります。
しかし、ステージを広げたり形を変更したりするたびに、端のタイルを手作業で直すのは少し大変です。
そこで便利なのが、Rule Tile です。

Rule Tileを使うと、周囲のタイルの配置状況に応じて、表示するタイルを自動で切り替えることができます。
たとえば、地面を塗るだけで、中央部分、端、角のタイルを自動で判定して配置できます。
Rule Tileでできること
Rule Tileを使うと、次のようなことができます。
・地面の端を自動で切り替える
・角のタイルを自動で表示する
・中央の地面タイルを自動で埋める
・同じ場所でも複数の見た目をランダムに表示する
普通のTileは、選んだ画像をそのまま配置するだけです。
一方、Rule Tileは、周囲のタイルを確認して「この場所にはどの画像を表示するべきか」を判断してくれます。
そのため、地面や壁、道路、水辺など、つながりのあるマップを作るときに便利です。
Tilemap Extras の import
Rule Tileを使うには、2D Tilemap Extras というパッケージを追加します。Package Manager から追加できる場合は、次のように確認します。
Window
→ Package Manager
→ 2D Tilemap Extras

すでに入っている場合は、そのままRule Tileを作成できます。
Projectビューで右クリックして、次のように作成します。
Create → 2D → Tiles → Rule Tile

これでRule Tileのアセットが作成されます。
今回は、サンプルとして Sample Ground Tile というRule Tileを作成しています。
Rule Tileの基本構成
Rule Tileを選択すると、Inspectorに設定項目が表示されます。

主な項目は次の通りです。
Default Sprite
Default Sprite は、基本となる画像です。
Rule Tileの条件に当てはまらない場合や、最初に表示する画像として使われます。
今回の例では、草の地面タイルをDefault Spriteに設定しています。
Rule Tileを作った直後は、まずこのDefault Spriteを設定しておくと分かりやすいです。

Default GameObject
Default GameObject は、タイルを配置したときに一緒にGameObjectを生成したい場合に使います。
たとえば、特殊なタイルを置いたときにオブジェクトも生成したい、というような場合に使います。
通常の地面タイルを作るだけなら、ここは None のままで問題ありません。
Default Collider
Default Collider は、当たり判定の設定です。
選択肢には、主に次のようなものがあります。
・None
・Sprite
・Grid
地面として歩けるだけなら、Colliderを付けないでも問題なし。
壁や障害物として使う場合は、Colliderを設定します。
今回のサンプルでは 地面は歩ける場所として使いますので、Sprite にしています。
Number of Tiling Rules
Number of Tiling Rules は、Rule Tileのルール数です。
ここに数値を入れると、その数だけルールを作ることができます。
今回のサンプルでは、結果的に 9 になりますが、最初から設定しなくても大丈夫です。
下のルールを追加(+ボタン)で追加した際に、1つずつ増えていきます。
地面タイルを作るときによく使う、次のタイルを設定すると決まっている場合には、最初に9種類を用意しておくといいでしょう。
・中央
・上
・下
・左
・右
・左上
・右上
・左下
・右下
Tiling Rulesとは
Tiling Rules は、Rule Tileの中心となる設定です。
それぞれのルールで、次のようなことを決めます。
・周囲に同じタイルがあるか
・周囲に同じタイルがないか
・その条件のときに表示する画像
・画像を1枚だけ使うか、複数からランダムに選ぶか
・Colliderをどうするか
Rule Tileは、このTiling Rulesを上から順番に確認して、条件に合うSpriteを表示します。

3×3のマスで周囲の条件を指定する
Tiling Rulesの右側には、3×3の小さなマスがあります。
中央のマスが、今配置しているタイルです。
その周囲8マスに対して、条件を設定します。
表示される記号の意味は、主に次のようなイメージです。

緑の矢印
緑の矢印は「その方向に同じRule Tileがある必要がある」という意味です。
たとえば、中央の地面タイルなら、上下左右に同じ地面がつながっている必要があります。
そのため、上下左右に緑の矢印を設定します。

赤いバツ
赤いバツは「その方向に同じRule Tileがあってはいけない」という意味です。
たとえば、上端のタイルを表示したい場合、上側には地面がなく、下や左右には地面がある、という条件になります。
このとき、上に赤いバツを設定します。

空白
空白は「どちらでもよい」という意味です。
同じタイルがあってもなくても、そのルールの判定には使いません。
細かく条件を作りすぎるとルールが複雑になるため、必要な方向だけ指定するのがポイントです。
中央タイルのルール
中央タイルは、周囲が地面で囲まれている場所に使います。
今回の例では、上下左右に同じ地面タイルがある場合、中央用の草タイルを表示するように設定しています。
このルールを作っておくと、広い範囲を塗ったときに、内側の地面が自然に表示されます。
中央タイルには、草の模様が少し違う画像を複数登録しておくと、見た目が単調になりにくくなります。

上下左右の端タイル
地面の外側には、端のタイルを表示します。
たとえば、上端であれば、上側には地面がなく、下側には地面があります。同じように、下端、左端、右端も作っていきます。
端タイルを設定しておくと、地面の形を変えても、外側の境界線が自動で切り替わります。
これにより、手作業で端を修正する必要がかなり減ります。

角タイル
地面の角には、専用の角タイルを使います。
左上、右上、左下、右下の4種類です。
角タイルを設定しておかないと、地面の端が不自然に見えたり、画像がつながらなかったりします。
今回のサンプルでも、角に草と土の境界が出るようにタイルを設定しています。
角タイルは、Rule Tileの見た目を自然にするうえで特に重要です。

Output
Output は、そのルールに当てはまったときの画像の出し方を決める項目です。
主に使うのは次の2つです。
・Single
・Random
Single
Single は、指定したSpriteを1枚だけ表示します。
端や角など、決まった画像を表示したい場合に使います。
たとえば、上端は必ず上端用の画像にしたい、という場合はSingleで問題ありません。
Random
Random は、複数のSpriteの中からランダムに表示します。
今回のサンプルでは、中央の草タイルや端タイルにRandomを使っています。
Randomを使うと、同じ地面でも少しずつ見た目を変えることができます。
たとえば、次のようなバリエーションを混ぜられます。
・普通の草
・花がある草
・草が薄い場所
・モグラの穴がある場所
・少し汚れた地面
これにより、同じタイルをたくさん並べても、単調な見た目になりにくくなります。
Size
OutputをRandomにすると、Size という項目が表示されます。
Sizeは、ランダム表示に使うSpriteの数です。
たとえば、Sizeを 3 にすると、3枚のSpriteを登録できます。
今回の例では、中央のルールに対して次のように3種類の画像を登録しています。
・基本のタイル
・バリエーション1
・バリエーション2
これにより、同じ条件の場所でも、複数の見た目をランダムに表示できます。

Noise
Noise は、Random表示のばらつき方に関係する値です。
値を変えることで、ランダムに表示される模様の出方が変わります。
完全に毎回バラバラというより、Tilemap上の位置をもとに、ある程度自然に散らばるようなイメージです。
まずは初期値(0.5)のままでも問題ありません。
見た目を確認しながら、必要に応じて調整するとよいです。
Shuffle
Shuffle は、Randomで選ばれたSpriteを「回転させたり、反転させたりして使うかどうか」を決める設定です。
Fixed は「画像を回転・反転せず、そのまま表示する」という意味です。
つまり Shuffle は、選ばれたSpriteをどの向きで表示するかに関係する設定です。
Extend Neighbor
Extend Neighbor は、隣接判定を拡張するための設定です。

通常のRule Tileでは、周囲に同じRule Tileがあるかどうかを見て判定します。
基本的な地面タイルを作るだけなら、最初はオフのままで問題ありません。
複数のRule Tileを組み合わせて判定したい場合など、少し応用的な使い方で関係してくる項目です。
Rule Tileの作成手順
ここからは、実際にRule Tileを作る流れを確認します。
1. Tilemap Extrasを確認する
まず、Rule Tileが使える状態か確認します。
Package Managerを開き、2D Tilemap Extrasが入っているか確認します。
すでに入っている場合は、そのまま次に進みます。
2. Rule Tileを作成する
Projectビューで右クリックします。
Create → 2D → Tiles → Rule Tile
作成したRule Tileには、分かりやすい名前を付けます。

3. Default Spriteを設定する
作成したRule Tileを選択し、Inspectorを確認します。
Default Spriteに、基本となる草タイルを設定します。
これで、Rule Tileの基本画像が設定されます。

4. Number of Tiling Rulesを設定する
次に、Number of Tiling Rulesにルール数を入力します。
中央、上下左右、角を作る場合は 9 としますが、1つずつ追加していっても構いません。
5. 中央タイルのルールを作る
中央タイルは、周囲に地面がある場所で使います。
3×3のマスで、上下左右に緑の矢印を設定します。
そして、右側のSpriteに中央用の草タイルを設定します。
見た目にバリエーションを出したい場合は、OutputをRandomに変更し、Sizeを増やして複数のSpriteを登録します。

6. 端タイルのルールを作る
次に、上、下、左、右の端タイルを設定します。
たとえば上端の場合は、上側に地面がないことを示すため、上に赤いバツを設定します。
下や左右には地面が続くため、必要に応じて緑の矢印を設定します。
同じように、下端、左端、右端も作成します。
複数の画像を用意して Random でバリエーションを作っても良いです。

7. 角タイルのルールを作る
最後に、左上、右上、左下、右下の角タイルを設定します。
角タイルは条件を間違えると、意図しない場所に表示されやすいです。
そのため、まずは大まかに設定して、Tilemapに塗りながら確認するのがおすすめです。

8. Tile Paletteに登録する
Rule Tileの設定ができたら、Tile Paletteに登録します。
Rule TileアセットをTile Paletteにドラッグします。

これで、通常のTileと同じようにBrushツールで塗れるようになります。
9. Sceneビューで塗って確認する
Tile PaletteからRule Tileを選び、Tilemap上に塗ってみます。
今回のサンプルでは、地面を塗るだけで、内側は草地、外側は土との境界、角は丸みのある地面として表示されています。
形を変えても、Rule Tileが周囲の状態を見て自動で見た目を切り替えてくれます。
これがRule Tileの大きなメリットです。

Rule Tileを使うときの注意点
Rule Tileは便利ですが、最初から完璧に作ろうとすると少し難しく感じます。
特に、角や複雑な地形は条件が増えやすいです。
そのため、最初は次の順番で作るのがおすすめです。
中央タイルだけ作る
上下左右の端を作る
角を作る
ランダムバリエーションを追加する
実際に塗りながら調整する
いきなりすべてのパターンを作ろうとするより、少しずつ確認しながら進めると理解しやすくなります。
今回のまとめ
今回は、UnityのTilemapで使える Rule Tile について確認しました。
Rule Tileを使うと、周囲のタイルの配置状況に応じて、表示するタイルを自動で切り替えることができます。

Rule Tileを使うと、Tilemapでのステージ作成がかなり楽になります。
特に、地面を塗るだけで端や角が自動で切り替わるため、初心者の方でも自然なマップを作りやすくなります。
▼ Unity初心者向け記事まとめはこちら
こちらのマガジン「ミニゲーム作成講座 全8回セット」でもシーンの切り替えなどを活用して、初心者でも知識ゼロから作れるミニゲーム作成講座を紹介しています。

さらにステップアップの「スマホで遊ぶジャンプゲーム 8回セット」のマガジンもぜひご活用ください。

ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!