はじめに
Unityでのゲーム開発初学者です。
2Dゲームのタイルマップ周りの用語や各機能の使い方がよくわかっていなかったので、
理解するためにいろいろと触ってみました。
環境
macOS Ventura 13.4
Unity 2022.3.2f1
タイルマップでタイルを配置してみる
1. タイル用の画像を作成してAssets配下に格納する(Sprite化する)
自分はFileAlpacaで作成した以下画像をAssets/Images配下に格納しました。
![images](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F89159%2Fd3a07254-cb1d-c6ef-9ac1-ea51e0e0cb77.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=36c7afbd81fdd1b4c71d64a473203747)
2. HierarchyにTilemapを追加する
以下手順で作成する。
「2DObject」→「Tilemap」→「Rectangular」
3. ProjectにTilePaletteを追加する
以下手順で作成する。
「Window」→「2D」→「TilePalette」
4. TilePaletteにSpriteをD&Dで配置する
TilePaletteのここにD&Dしてくださいとなっている箇所にD&Dする。
Spriteを全選択して行うと纏めて配置できる。
5. Sceneにタイルを配置していく
今回タイルに作成した画像は32x32で、各SpriteのPixelsPerUnitは100にしていたので、
GripのCellSizeはそれに合わせて0.32としている。
手順5までで以下のような状態。
![screen_state](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F89159%2F4246ea5d-ab92-7e91-2630-26ec4794d723.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c5868c7d84038fd4d1f2439343fbf8d4)
コライダーを設定してみる
1. タイルマップにコライダーを追加する
TilemapのInspectorからTilemapCollider2Dを追加する。
Tilemapを選択するとシーン上で配置したタイルの外側にコライダーが付与されているのが確認できる。
2. 適当なオブジェクトをタイルの上から落としてみる
HierarchyにCircleオブジェクトを追加してタイルの上に配置する。
CircleのInspectorからRigidbody2DとCapsuleCollider2Dを追加する。
これでゲームを実行するとCircleオブジェクトがタイルと接触したところで止まるのが確認できる。
3. 比較のため高さの違うタイルマップを作成して配置する
以下のような高さの低いタイルを追加してシーン上に配置してみる。
こういったタイルの場合、自動で色のついた部分にコライダーが付与される。
SprinteEditorのCustomPhysicsShapeでコライダーの範囲を好きなように設定することもできる。
![screen_state](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F89159%2Ffdc8c98f-e38c-7f26-db49-36c7c09cee43.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=fd2382bff814254ed42c23d612be5d8d)
最終的には以下のようなフィールドを実装することができた。
タイルマップを使えば2Dアクションゲーム用のステージも色々作れそうだ。
タイルマップを使用するメリット
スプライトを1つ1つ使用するよりタイルマップを使用した方がパフォーマンスは改善するとのこと。詳細は以下の記事に記載されている。
※4年前の記事なので情報が古い場合があります。
その他参考にした記事
絵に例えると、Tilemapがキャンパス、TilePalleteがパレット、素材の画像が絵の具ですね。
この表現がイメージしやすくてとても分かりやすかった。
最後に
機会があればスプライトアトラスとかも自分で作って使ってみたい。