この記事はUnityのTilemapについて解説している記事です。
<Tilemapとは>
TilemapはUnityの標準機能でSpriteを規則正しい形で並べるのに便利な機能です。
Unity2017.2から登場した機能になります。
↓のように塗るような感じでSpriteを並べる事ができるようになります。
Spriteがよくわからない方は↓の記事を参考にしてください。
<Tilemapの作り方>
タイルマップを作成するにはヒエラルキービューで右クリックして2D Objectからタイルマップを作成します。
Tilemap以下のメニューは全てタイルマップになります。タイルマップは数種類あってそれぞれ形が違います。
Tilemap
四角形のグリッドを作成します。
Hexagonal Point Top Tilemap
六角形の角ばった部分が上に来るようなグリッドを作成します。
Hexagonal Flat Top Tilemap
六角形の辺の部分が上に来るようなグリッドを作成します。
Isometric Tilemap
奥行きある四角形のグリッドを作成します。
Isometric Z As Y Tilemap
奥行きと高さのあるグリッドを作成します。
作成されるもの
Tilemapを作成するとGridというグリッド線を作るゲームオブジェクトと、Tilemapというスプライトを並べてくれるゲームオブジェクトの2つが作成されます。
必ずしも最初から目的の形で作成する必要はなく、Gridのパラメータを変更する事で変える事が出来ます。
<Tilemapの塗り方>
Tilemapを塗るにはTilepaletteを用意する必要があります。
Tilepaletteについては↓の記事で解説していますので参考にしてみてください。
Tilepaletteの設定をしてシーンビュー上で塗る事でタイルマップを作っていく事が出来ます。
左から
・マップチップを選択します。
・選択中のマップチップを移動します。
・選択したマップチップでグリッドを塗ります。Shift押しながらで削除できます。「{」「}」キーで回転する事が出来ます。
・マップチップを範囲選択できます。
↓左のような範囲選択をしてから、筆アイコンで塗ろうとすると、右のように塗れます。
範囲を1マス指定にすると、矩形で塗りつぶします。
Shif押しながらで削除できます。
・スポイトです。このツールを選択した状態でシーンビューのマップチップをクリックすると、そのマップチップで塗れるようになります。
・消しゴムです。
・選択したマップチップでグリッドを塗りつぶします。
<Gridのパラメータ>
Tilemapを作成するとTilemapの親オブジェクトにGridというコンポーネントがついたゲームオブジェクトが作成されます。
↓とりあえずの比較基準です。↑のデフォルトの状態のタイルマップになります。
Cell Size
1マス1マスのサイズを変更します。
塗られているスプライト自体の大きさはスプライトのPixels Per Unitで決まるので、スプライトと1マスのサイズが違うと↑のようにズレが出てきます。
Cell Gap
マスごとの間隔です。
↑非常に見辛くて申し訳ないのですが、マスの大きさは変わらず、マスとマスとの間隔が離れている事がわかります。
Cell Layout
マスの形を指定します。
・Rectangle・・・矩形
・Hexagon・・・六角形
・Isometric・・・ひし形
・Isometric Z As Y・・・高さがあるひし形
これらの具体的な形についてはヒエラルキーでCreateしたものを見てください。
Cell Swizzle
タイルマップの平面軸を設定します。スプライトの軸が変わる訳ではないので注意してください。スプライトの軸自体を変えたい場合はTilemapのコンポーネントで変更します。
<Tilemapのパラメータ>
Animation Frame Rate
タイルマップのアニメーションのフレームレートを指定します。
色々調べて見たのですが、2019/12/24現在ではこのパラメータは特別な方法を使わないと使用できないと思われます。Unity本来の機能だけでは使用できないと思います。
違ったらすいません。
2d-extrasを導入する事でアニメーション付きタイルマップを使用できます。
この機能は未だPackage Managerにも導入されていないのでいづれ正式に使う事ができるようになるのかもしれません。
Color
タイルマップの色を変更します。
Tile Anchor
タイルマップの中心点を指定します。
0.5がマス目の中心になります。
0.5からズラす事でタイルマップがマス目の中心位置からズレます。
Orientation
マップチップをどの軸で配置するのかを指定します。
・Position, Rotation, Scale
OrientationをCustomにした時のみ編集できるパラメーターです。
マップチップのオフセットと回転と大きさを変更する事ができます。
<Tilemap Renderer>
Sort Order
マップチップ通しの重なり方を指定します。
指定した箇所が手前に来るようになります。
Top Leftであれば、マップチップの上と左の部分が手前に来るように重ねます。
ただし、この設定だけでは挙動がおかしくなる時があるようです。
グラフィックの重なり方がおかしい場合はProject Setting>Graphics>Transparency Sort Axisの設定を変える必要があります。
↓のように設定すると上へいけば奥にいき、Zの値を大きくすることで手前に来るようになります。
Mode
このタイルマップのレンダリングのやり方を指定します。
・Chunk
各タイルを個別にレンダリングするのではなく、タイルをまとめて大きなブロックとして一括レンダリングします。
まとめて一括レンダリングされるので動作が軽くなります。
しかし、一括でレンダリングされるため、キャラクターなど他のオブジェクトの前面や背後に動的に並べ替えることはできません
・Individual
各タイルを別々にソートするモードです。
動作としては重くなりますが、キャラクターなど他のオブジェクトの前面や背後に動的に並べ替えることができます。
Detect Chunk Culling Bounds
タイルマップのチャンクカリング境界を設定します。
Autoに設定していると自動で計算してくれます。
ManualにするとChunk Culling Boundsを設定する事ができます。
タイルマップがカメラにうまく表示されない場合に設定します。
Mask Interaction
タイルマップはSprite Maskを使用する事でマスクをかける事ができます。
・None
タイルマップにマスクをかけません。Sprite Maskがあっても無視します。
・Visible Inside Mask
タイルマップをマスクの内側だけ表示するようにします。
・Visible Outside Mask
タイルマップをマスクの外側だけ表示するようにします。
Material
タイルマップにマテリアルを追加します。
Additional Settings
・Sorting Layer
上部メニューのProject Setting>Tags & Layersで設定されているレイヤーです。
同じ位置に2D表現で表されたものがある場合、どれを前面に持ってくるかを設定できます。Tags & Layers>Sorting Layerで下に設定したものほど前面に出ます。
・Order in Layer
同じレイヤー内の同じ位置に存在する2D表現で表されたものを数字が大きいものほど前に表示します。
Sorting Layerの中をさらに細分化して表示順を制御するものです。
<Tilemap Collider 2D>
自動でマップチップからコライダーを生成するコンポーネントです。
各種マップチップのコライダーはマップチップのデータで設定します。
↑のCollider Typeで、SpriteもしくはGridのどちらからコライダーを作成するのかを設定します。
Spriteのコライダーの設定の仕方は↓の記事を参考にしてください。
Max Tile Change Count
タイルマップを動的に追加、削除、変更する際に最大数の制限をかけます。
一度に大量のタイルマップを変更すると重くなるので、それを防ぐために使用します。
Extrusion Factor
このパラメーターはUsed By Compositeをオンにして、Composite Collider 2Dをこのゲームオブジェクトにつけた場合のみ変更する事ができます。
Material
Physics Material 2Dを設定して物理的特性を変更します。
Physics Material 2Dについては↓の記事を参考にしてください。
Is Trigger
このコライダーの当たり判定を無くし、トリガーとして使用します。
Used By Effector
「Effector 2D」であるコンポーネントを使用するかどうかです。
チェックが入っているとこのゲームオブジェクトにくっついているEffector 2Dが動作します。
Used By Composite
「Composite Collider 2D」というコンポーネントの使用を可能にします。
これは複数あるコライダーを一つにまとめてくれるコンポーネントです。
Rigidbody2Dも一緒につけないと機能しません。
Offset
コライダーをマップチップの中心からどれだけ離すのかを表します。
コライダーの位置調整に使用します。