1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TilemapのAutoTileについて

Last updated at Posted at 2025-07-13

この投稿では、Unity 6.1 & 2d-extras 4.2.0で利用可能になった「AutoTile」を紹介します。

概要

AutoTileは、2d-extrasのv4.2.0で追加されたScriptableTileです。「事前に定義したルール」と「隣接セル上における同一AutoTileの有無」により、表示するSpriteを自動的に切り替えることができます。例えば、次のようなマップを単一のAutoTileアセットで作成できます。

image.png

AutoTileに似たScriptableTileとして、RuleTileがあります。RuleTileは、次の図のように「表示するSpriteのルール」をInspector上で事前に定義します。

image.png

AutoTileは、次の図のように「表示するSpriteのルール」をInspector上でRuleTileよりグラフィカルに、より直観的に定義することができます。

image.png

なお、2d-extras v4.2.0はUnity 6.1以降に対応しています。そのためAutoTileを使うには、Unity 6.1以降を、使う必要があります。

AutoTileの作成・設定方法

画像素材:https://kenney.nl/assets/top-down-shooter

次のTexture内のSpriteを、隣接Tileの有無により、切り替えて表示し、

pattern0.png

次のようなマップを、単一のアセットで作れるようなAutoTileの作り方を説明します。

image.png

まず、Project Windowの+ボタン > 2d > Tiles > Auto Tileを選択し、AutoTileを作成します。

image.png

Project Windowで作製したAutoTileアセットを選択し、Inspectorを開きます。

image.png

Mask Typeを「Mask_3x3」に切り替えます。Used Texturesに、Texture(Sprite)を設定します。

image.png


次のSpriteを表示するルールを、AutoTileのInspector上で設定します。このSpriteは、「隣接する右セルと下セルに、自身と同一のAutoTileアセットがある」ときに表示したいSpriteです。

image.png

AutoTileのInspector上で、対象Spriteの真ん中をクリックします。そうするとSpriteを9分割した真ん中の領域が赤くなります。

image.png

次に、対象Spriteにおける9分割した領域の右と下をクリックし、赤くします。赤い領域は「その方向の隣接セルに、同一のAutoTileが配置されている」というルール設定です。次の図ような状態になれば、「このSpriteを右セルと下セルに自身(真ん中)と、同一のAutoTileアセットがあるときに表示する」というルールを設定ができました。

image.png


次のSpriteを表示するルールを、AutoTileのInspector上で設定します。このSpriteは、「隣接する上セル、右斜め上セル、右セル、下セル、左セルに自身(真ん中)と、同一のAutoTileアセットがある」ときに表示したいSpriteです。

image.png

Inspector上、対象Spriteの上・右斜め上、右、下、左、真ん中をクリックします。次の図ような状態になれば「隣接する上セル、右斜め上セル、右セル、下セル、左セルに自身(真ん中)と、同一のAutoTileアセットがあるときに表示する」というルールを設定ができました。

image.png


同様の設定を、次の図のように表示したいすべてのSpriteに行います。

image.png

これで目的のAutoTileを作ることができました。


慣れが必要ですが、RuleTileよりもグラフィカルで、直観的にルール設定ができるのではないでしょうか。

なお、RuleTile、「上下左右のセル、どれかに同一RuleTileアセットが配置されていたら、Spriteを回転して表示」などの回転のルールや反転ルールを設定できました。残念ながらAutoTileは、回転・反転に対応していません。

Mask Typeについて

Mask Typeの「Mask_3x3」は、対象Spriteを9分割して

  • 右上
  • 右下
  • 左下
  • 左上
  • 真ん中

をクリックして赤くマスクすることで、「その方向のセルに同一AutoTileが配置されているときに表示」というルールが設定されます。


Mask Typeの「Mask_2x2」は、対象Spriteを次のように4分割します。

  • 右上
  • 右下
  • 左下
  • 左上

例えば、右上をクリックして赤くマスクすると、「右・右上・上の3方向のセルに同一AutoTileが配置されているときに表示」というルールになります。つまり、4分割した各領域をクリックして赤くマスクしたとき、次のようなルールが設定されます。

  • 右上・・・右・右上・上方向の隣接セルに配置されている
  • 右下・・・右・右下・下方向の隣接セルに配置されている
  • 左下・・・左・左上・上方向の隣接セルに配置されている
  • 左上・・・左・左下・下方向の隣接セルに配置されている

異なる画像で同じルールのAutoTileを作成する

「画像(Texture)を変えて、同じルールのAutoTileアセットを作りたい」という場面があります。

例えば次のように全く同じサイズ・全く同じSprite配置の異なる画像(Texture)があり、片方の画像1だけAutoTileアセットを作成済みで、もう片方の画像2でもAutoTileを作成したい、という場面を考えます。

画像1 画像2
pattern0.png pattern2.png

もう片方の画像2でも、全く同じ操作をしてAutoTileを作成するのは面倒です。実は、とても簡単に同じルールのAutoTileを作成できます。

すでに作成済みのAutoTileがAssets直下に、FirstAutoTileという名前であると仮定します。FirstAutoTileアセットのインスペクターを開き。Templateの右にある、Saveボタンを押します。

スクリーンショット 2025-07-18 225500.png

するとファイル保存のダイアログが開くので、適切なパス・適切な名前で保存します。ここでは、Assets直下に「MyAutoTilteTemplate」という名前で保存します。

スクリーンショット 2025-07-18 230021.png

新しいAutoTileアセットを作成します。ここでは、Assets直下に「SecondAutoTilte」という名前で保存します。作成したSecondAutoTilteの「Used Textures」に画像(Texture)を設定します。ここで設定する画像(Texture)は、まだAutoTileを作成していない画像2です。また、Mask Typeを「Mask_2x2」から「Mask_3x3」に変更します。

スクリーンショット 2025-07-18 230313.png

SecondAutoTilteのインスペクター、Templateの右にあるLoadボタンを押します。

スクリーンショット 2025-07-18 230313.png

ファイルを指定するダイアログが開くので、先ほど作成した「MyAutoTilteTemplate」を選択します。すると、SecondAutoTilteにもFirstAutoTileと同じルールが設定されます。

スクリーンショット 2025-07-18 230417.png

SecondAutoTileのインスペクターが、FirstAuoTileと同じように赤くマスクされていることに注目してください。

このように、全く同じ操作をしなくても、異なる画像で同じルールのAutoTileアセットを簡単に作成することができます。

リンク

画像素材:https://kenney.nl/assets/top-down-shooter

TileTemplateについて

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?