Unityのタイルマップ拡張タイル「 Rule Tile」の解説です。タイル貼り付けのルールを定義することで、オートタイルを実現する機能です。アニメーションタイルやタイルのランダム表示にも対応しています。
目次
Rule Tileとは
ルールに従って表示するスプライトを変更するタイルです。具体的にはオートタイルを実装するタイルです。
このタイルを利用することで、ツクール・ウディタ規格のオート規格タイルセット素材もUnityに適用できます。
上下左右斜めに隣接するタイルが自分と同じタイルであるかを判断し、決められたルールに則って条件が一致した場合、タイルのスプライトを切り替えます。ちなみに同じタイルというのは、自分自身という意味合いです。以下のように出力するタイルが異なりますが、このタイルである限り全て同じと扱います。
だいたいこんな感じです。
Aの条件を満たしたらタイルAを表示
Aの条件を満たさずBの条件を満たしたらタイルBを表示
A,Bの条件を満たさずBの条件を満たしたらタイルCを表示
A,B,C…全てのルールを満たさなければDefaut Tailを表示
Rule Tileは、単純にルールを決めるだけでなく、GameObjectをタイルと一緒に出力する機能(タイルを無しにGameObjectだけ出力することも可能)、ランダムなタイルを出力する機能、アニメーションする機能もあります。
基本的にはこれ一つでだいたいの拡張はカバーできると思います。
このページのサンプルはドット絵世界のタイル素材をお借りして解説していきます。
ルールの作り方
Projectを右クリックし、2D > Tiles > Rule Tileを選択します。
基本はInspectorのDefault Spriteに設定したスプライトを表示させます。ただし、条件を満たした場合に表示するのは新たに設定したスプライトになります。

例として、Default Sprite、Tiling Rulesの1番目、2番目にそれぞれスプライトをセットしています。この場合の意味は次の通りです。
- Tiling Rules1のルールを満たしたらTiling Rules1のスプライトを表示
- 上の条件を満たさずTiling Rules2のルールを満たしたらTiling Rules2のスプライトを表示
- それ以外の場合はDefault Spriteを表示
その結果、Tilemapにタイルを4×4で貼ってみると次のような形になりました。

隣接するグリッドの条件
Inspector右側の3×3マスのグリッドがRule Tileの一番重要な箇所なので、まずはその部分に注目します。このGridはTilemapにタイルを配置した時、隣接する周囲に同じタイルを配置しているかのチェック項目です。

Gridの真ん中を除いた周囲8箇所はクリックすると緑の矢印・×印・空白と切り替わります。この矢印の意味は次の通りです。
緑矢印 | 同じタイルが配置されている。 |
赤× | 同じタイルが配置されておらず、 異なるタイルか何も配置されていない。 |
空欄 | どんなタイルでも良いし、何も配置しなくてもよい。 |
この画像の場合、配置したタイルの右と下に同じタイルがあり、上と左下には同じタイルが無ければ、Inspector右に設定したスプライトを表示しなさいとの意味になります。
この状態で、そのすぐ横の9Gridの周り9マスをマウスでクリックすることによって、矢印を表示し、真ん中をクリックすることによってルールを決定します。
2つほど例を見てみます。
右に同じタイルがある場合、Tiling Rules1番目のタイルを表示するルール。左の2タイルは右に同じタイルがあるため、Tiling Rules2のスプライトを表示する一方、右のタイルは右が空のため、Defaultタイルを表示しています。
Tiling Rule1は右に同じタイルがあり、且つ左に同じタイルが無いルール。Tiling Rule2は右に同じタイルがあるルール。
画像を見ると、左の2タイルは右に同じタイルがあり、左にはタイルがないため、Tiling Rule1のスプライトが表示されます。
真ん中の2タイルは、まずTiling Rule1の条件を見て、左に同じタイルがあるため条件を満たしません。次にTiling Rule2の条件を見ると、右に同じタイルがあるため、Tiling Rule2のスプライトが表示されます。
真ん中のルール
真ん中の項目は周囲8マスの条件をどのように適用させるかを決めるルール項目です。クリックするごとに変化していきます。
![]() | Fixed | 条件と一致する必要があります。 |
![]() | Rotate | 一致しなければ時計回りに条件を90度回転して確認。 最大3回回転してどれかに一致する必要があります。 一致したらタイルは適用した時の角度に回転して表示。 |
![]() | MirrorX | 一致しなければ条件を横のみ180度反転して確認。 一致したらタイルは適用した時の角度に回転して表示。 |
![]() | MirrorY | 一致しなければ条件を縦のみ180度反転して確認。 一致したらタイルは適用した時の角度に回転して表示。 |
![]() | MirrorXY | 一致しなければ条件を縦横180度反転して確認。 一致したらタイルは適用した時の角度に回転して表示。 |
具体例をいくつか。
Tiling Rule1はルールをRotateで左にタイルがあるを条件にしています。右の2タイルは共に左に同じタイルがあるため、Tiling Rule1のスプライトが表示されます。
左下のタイルは、左に同じタイルがありません。そのため、90度時計回りに条件を回転して上に同じタイルがないか確認しています。上には同じタイルがあるため、Tiling Rule1のスプライトを90度時計回りに反転して表示しています。
左上のたいるは、左に同じタイルがありません。そのため、90度時計回りに条件を回転して上に同じタイルがないか確認しています。上にも同じタイルがないため、さらに90度時計回りに回転して右に同じタイルがないか確認。右に同じタイルがあるため、Tiling Rule1のスプライトを180度時計回りに反転して表示しています。
Tiling Rule1はルールをMirrorXで左にタイルがあるを条件にしています。右の2タイルは共に左に同じタイルがあるため、Tiling Rule1のスプライトが表示されます。
左のタイルは、左に同じタイルがありません。そのため、横に180度反転し右に同じタイルがないか確認しています。右にタイルがあるため、Tiling Rule1のスプライトを横に180度反転させて表示しています。
Tiling Rule1はルールをMirrorXYで左にタイルがあるを条件にしています。右の2タイルは共に左に同じタイルがあるため、Tiling Rule1のスプライトが表示されます。
左のタイルは、左に同じタイルがありません。そのため、横に180度、縦に180度反転し右に同じタイルがないか確認しています。縦の回転は上下に矢印がないため関係ありません。。右にタイルがあるため、Tiling Rule1のスプライトを横に180度、縦に180度反転させて表示しています。
Extend Neighbor

Extend Neighborにチェックを入れると、周囲8マスの制限が外れ、矢印がある場所+1までマスを拡大して条件を作ることができます。
個別タイルのプロパティ

プロパティ
GameObject
GameObjectをセットした場合、そのタイルマップにそのタイルをセットした場所に、GameObjectが生成されます。
例えば以下の例では、Default Game Objectは空、Tiling Rules1にはTestObject Prefabsをセットしています。シーンビューで2×2マスにするとルールにより、Defaultのスプライトが2個、Tiling Rules1のスプライトが2個配置されます。この場合、ゲームを実行するとGame ObjectをセットしたTiling Rule1のスプライトが2個、タイルマップの配下に生成されます。これらのPositionは、Tiling Rule1のスプライトが表示されているタイルのPivotになります。
Collider
- Spriteの場合、画像に沿った形(透明部分を省く)のコライダー
- Gridの場合、グリッドに沿った形のコライダー
- Noneの場合、コライダー未設置(当たり判定が無い)
Output
- Singleの場合、設定したスプライトを表示
- Randomの場合、追加で指定した複数のスプライトからランダムに1つを選択して表示
- Animationの場合、追加で指定した複数のスプライトをアニメーションで表示
Output = Randomの追加項目

Size
Sizeを変更するとランダムに変更したいタイル数が変化するので、各箇所にタイルをセットします。
例えば、下画像ではSizeを3にして、各素材は以下の3つを利用しています。その状態で、タイルを貼ると次のようにルールに関係なく、画像がランダムに切り替わります。ランダムですが、グリッドに貼るとき、グリッドの(1,1)座標は必ず1番目のスプライト、1,2は必ず3番目のスプライトと、ランダムに位置が固定です。そのためにランダム幅を広くするため、NoiseとShuffleが用意されています。
Noise
ランダムの位置を変えます。基本的にはタイルマップにタイルを塗ったら、満足できるまでこの項目を適当にいじって配置を変えます。
Shuffle
- Fixedの場合、回転はありません。
- Rotatedの場合、一つ一つのタイルをランダムに0、90、180、270度回転させます。
- MirrorXの場合、一つ一つのタイルをそのままか、ランダムに横に180度反転します。
- MirrorYの場合、一つ一つのタイルをそのままか、ランダムに縦に180度反転します。
- MirrorXYの場合、一つ一つのタイルをそのままか、ランダムに縦縦共に180度反転します。
この回転もタイルマップの位置によって回転量が固定のため、必要があればNoiseを利用します。
Output = Animationの追加項目

Min Speed~Max Speedの中からランダムに速度を取得し、Sizeで指定したスプライトを順番に表示します。具体的な内容は、ほぼAnimated Tileと同様の機能なため、Animated Tileの解説も参考にしてみてください。