LoginSignup
11
7

More than 5 years have passed since last update.

Tileを切り替えずマップをサクサク作れる、TerrainTile、PilelineTile、RuleTile

Last updated at Posted at 2018-02-14

 Tilemapでマップを作る時、複数のTileを何度も何度も切り替えてマップを作ります。

 この投稿で紹介するTerrainTilePipelineTileそしてRuleTileを使えば、(あなたが使いたいマップによっては)Tileの切り替えをせずに、たった1つのTileで目的のマップを作れるかもしれません。

 本投稿では、TerrainTilePipelineTileそしてRuleTileを紹介します。

デモ

 まずはPipelineTileTerrainTileのデモを示します。Tileを切り替えず一つのTileだけでマップを作成しています。Tileは一つで作っていますが複数の種類のSpriteが表示されていることに注目してください。

 PipelineTileの例

`PipelineTile`.gif

 TerrainTileの例

`TerrainTile`.gif

ScriptableTile

 Tilemapの強みの一つは、その拡張性です。

 TerrainTilePilelineTileそしてRuleTileはその拡張性を生かした成果物の一つです。

 これらのクラスは、TileBaseというクラスを継承したクラスです。TilemapにこのTile自身が置かれた時と、周りに新たなTileがTilemapに置かれた時の挙動が拡張されています。

 TerrainTilePilelineTileのように、TileBaseを拡張し独自の挙動を定義したものをScriptableTileと言います。

周りのTileからSpriteを自動的に決定&回転

 通常の作り方で作ったTileは、常に同じSprite一つだけを表示します。

 TerrainTilePilelineTileそしてRuleTileは、置いた場所に隣接するTileの存在の有無から、事前に設定した複数のSpriteから自動的に表示するSpriteを決定し、適切にSpriteを回転させるTileです。

 次のGifを見てください。

simple.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

 TerrainTilePilelineTileそしてRuleTile2d-extrasの中にあります。

 2d-extras、Unity公式の2D拡張ライブラリで、GitHubのUnity-Technologiesのリポジトリにあります。

 2Dと言いつつ、まだTilemap関連のコードしかありません。

 使いたい人はGitHubからクローンしてきて、Unityプロジェクトにインポートしてきてください。

11
7
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
11
7