Tilemapでマップを作る時、複数のTileを何度も何度も切り替えてマップを作ります。
この投稿で紹介するTerrainTile
、PipelineTile
そしてRuleTile
を使えば、(あなたが使いたいマップによっては)Tileの切り替えをせずに、たった1つのTileで目的のマップを作れるかもしれません。
本投稿では、TerrainTile
、PipelineTile
そしてRuleTile
を紹介します。
デモ
まずはPipelineTile
とTerrainTile
のデモを示します。Tileを切り替えず一つのTileだけでマップを作成しています。Tileは一つで作っていますが複数の種類のSpriteが表示されていることに注目してください。
PipelineTile
の例
TerrainTile
の例
ScriptableTile
Tilemapの強みの一つは、その拡張性です。
TerrainTile
、PilelineTile
そしてRuleTile
はその拡張性を生かした成果物の一つです。
これらのクラスは、TileBase
というクラスを継承したクラスです。TilemapにこのTile自身が置かれた時と、周りに新たなTileがTilemapに置かれた時の挙動が拡張されています。
TerrainTile
やPilelineTile
のように、TileBaseを拡張し独自の挙動を定義したものをScriptableTileと言います。
周りのTileからSpriteを自動的に決定&回転
通常の作り方で作ったTileは、常に同じSprite一つだけを表示します。
TerrainTile
、PilelineTile
そしてRuleTile
は、置いた場所に隣接するTileの存在の有無から、事前に設定した複数のSpriteから自動的に表示するSpriteを決定し、適切にSpriteを回転させるTileです。
次のGifを見てください。
もともと置いてあったTileも、新たに置いたTileもどちらもTerrainTileです。
新たなTileが置いたタイミングで、もともと置いてあったTileのSpriteが変わりました。
新たに置いたTileは、置いたタイミングで、もともとあったTileの更新前・後とどちらも違うSpriteが表示されました。
このように、置いた場所に隣接するTileの存在の有無から、事前に設定した複数のSpriteから自動的に適切なSpriteを選び、適切に回転させてくれます。
Tileを切り替えずとも、1つのTileでサクサクマップを作成することができます。
PipelineTile
5種のSpriteを設定し、上下左右隣接4セルの存在の有無からSpriteを決定し、適切に回転させてくれるTileです。
TerrainTile
15種のSpriteを設定し、隣接8セルの存在の有無からSpriteを決定し、適切に回転させてくれるTileです。
以下の記事に、どういうSpriteを準備すればいいのかをまとめました。
「ダンジョンを作れる!TerrainTileを使ってみよう!」
RuleTile
「隣接Tileがどういう状態か」で「どのSpriteを表示するか」というルールも自分でカスタマイズできるTileです。
2d-extras
TerrainTile
、PilelineTile
そしてRuleTile
は2d-extrasの中にあります。
2d-extras、Unity公式の2D拡張ライブラリで、GitHubのUnity-Technologiesのリポジトリにあります。
2Dと言いつつ、まだTilemap関連のコードしかありません。
使いたい人はGitHubからクローンしてきて、Unityプロジェクトにインポートしてきてください。