2Dゲームの地面や壁、洞窟、街並み——これらをSprite 1枚ずつ並べて作るのは、気が遠くなる作業です。そこで使うのが Tilemap 。小さなタイル(絵)を格子状に敷き詰めて、広いマップを効率よく組み立てる仕組みです。Spriteとスプライトシート は用意できたけれど、ステージをどう作ればいいか止まっていませんか?
この記事では、Tilemapの 3つの部品(Grid・Tilemap・Tile Palette)から、タイルに 当たり判定 を付ける方法、地面と装飾を レイヤー に分けるコツ、境界タイルを 自動配置 するRule Tile、そして スクリプトからタイルを置く 方法まで、2Dステージ作りの土台をひととおり解説します。
この記事でわかること
- Grid・Tilemap・Tile Palette の関係(格子・地図・絵の具箱)
- タイルに 当たり判定 を付ける(Tilemap Collider 2D+Composite)
- 地面・装飾を 複数のTilemap に分ける(Sorting Layer)
- Rule Tile で境界タイルを自動配置する(2D Tilemap Extras)
- 実践:
SetTileでスクリプトからタイルを配置する
動作確認環境: Unity 2022.3 LTS / Unity 6
Grid・Tilemap・Tile Palette
Unityのタイルマップは、3つの部品でできています。まずこの関係を押さえると、この先が迷わず読めます。

| 部品 | 役割 |
|---|---|
| Grid | タイルを並べる格子を管理する親のGameObject。マス目の大きさを決める |
| Tilemap | その格子にタイルを実際に敷く子のコンポーネント。1枚の地図に相当 |
| Tile Palette | 使えるタイルを登録した絵の具箱。ここからタイルを選んで描く |
作る手順
- Hierarchyで右クリック →
2D Object > Tilemap > Rectangularを選ぶと、Grid+Tilemapが自動で作られます Window > 2D > Tile Paletteでパレットを開き、Create New Paletteで新規パレットを作成- スライス済みのスプライトシート(Spriteとスプライトシート で作ったもの)をパレットにドラッグ。各マスが「使えるタイル」として登録される
- パレットでタイルを選び、Sceneビューを筆でなぞるように描いていく
これだけで、広い地面や壁があっという間に敷けます。1マスずつSpriteを置く必要はありません。
補足: 1つのTile Palette(絵の具箱)は、複数のTilemap(地図)で共有できます。絵の具箱は1つ、地図は何枚でも、という使い方が基本です。
タイルに当たり判定を付ける
床の上をプレイヤーが歩き、壁で止まる——この 当たり判定 は、Tilemapにコンポーネントを足すだけで、敷いたタイル全体に一気に付きます。

- 地形のTilemapに
Tilemap Collider 2Dを追加する。これで、タイルが敷かれた場所すべてに自動で当たり判定が生まれる - さらに
Composite Collider 2Dを追加する(Rigidbody 2Dも一緒に付くので、その Body Type をStaticにする) - Tilemap Collider 2Dの
Used By Compositeにチェック を入れる
Composite Collider 2Dを足す理由は2つです。 タイルごとに分かれた当たり判定が1枚の輪郭に結合される ため、タイルの継ぎ目にプレイヤーが引っかかる不具合が消えます。さらに 当たり判定の数が激減して動作が軽くなる ため、広いマップでも軽快に動きます。プレイヤー(Rigidbody 2D+Collider 2D)は、この地形の上を歩けるようになります(Rigidbody2DとCollider2D 参照)。
複数のTilemapでレイヤー分け
マップは1枚のTilemapでも作れますが、 役割ごとにTilemapを分ける と管理がぐっと楽になります。Gridの下に、Tilemapを持つGameObjectを複数ぶら下げます。

Grid
├── Background (Tilemap) # 背景(空・遠景)。当たり判定なし
├── Ground (Tilemap) # 地面・壁。Tilemap Collider 2D + Composite
└── Decoration (Tilemap) # 草・小物。地面の上に重ねる。当たり判定なし
- 前後関係(描画順) :各Tilemapの
Tilemap Rendererの Sorting Layer と Order in Layer で決めます。数字が大きいほど手前に描かれます。地面の上に草を 重ねたいなら、DecorationのOrderをGroundより大きくします。 - 役割の分離 :当たり判定は
Groundだけに持たせ、BackgroundやDecoration(草・看板)は当たり判定なしにします。「当たる地面」と「飾りだけの装飾」を混ぜないのがコツです。
Sorting LayerはSprite全体で共通 です。プレイヤーのSpriteRendererのSorting Layer/Orderも同じ土俵で比較されるので、「プレイヤーを装飾の手前に出したい」といった調整もここで行います。詳しくは レイヤーとタグ も参考になります。
Rule Tileで境界を自動化する
草地と土の境目、壁の角、道の曲がり角——これらの 境界タイルを1枚ずつ選ぶのは大変 です。そこで使うのが Rule Tile 。周囲のタイルの状況を見て、エンジンが自動で適切なタイルを選んでくれる仕組みです。

Rule Tileは標準機能ではなく、 2D Tilemap Extras パッケージに含まれます。
- Package Managerで
com.unity.2d.tilemap.extras(2D Tilemap Extras)をインストール Create > 2D > Tiles > Rule TileでRule Tileアセ ットを作成- 「上下左右に同じタイルがあれば中央用、なければ縁用」といった ルール を設定し、各パターンに対応するスプライトを割り当てる
- このRule Tileをパレットに登録して塗る
一度ルールを組めば、あとは 地形を塗るだけで境界が自動でつながります 。手作業で角タイルを探す必要がなくなり、マップ作りが一気に速くなります。
まずは普通のタイルから: Rule Tileは強力ですが設定に手間がかかります。最初は普通のタイルでマップを組み、「境界を毎回手で置くのが辛い」と感じてから導入するのがおすすめです。
実践:スクリプトでタイルを配置する
タイルはエディタで手描きするだけでなく、 コードから動的に配置 できます。ローグライクの自動生成ダンジョン、サンドボックスの地形破壊、シミュレーションの地形生成——「マップをルールで作る」ジャンルで活躍します。

鍵になるのが SetTile() です。「このセル座標に、このタイルを置く」と指定します。座標は Vector3Int(格子のマス目座標) で、ワールド座標(ピクセル)とは別物です。
using UnityEngine;
using UnityEngine.Tilemaps;
public class DungeonGenerator : MonoBehaviour
{
[SerializeField] private Tilemap groundTilemap;
[SerializeField] private TileBase floorTile; // Inspectorでタイルアセットを割り当てる
void Start()
{
// 20x15の床をまとめて敷く
for (int x = 0; x < 20; x++)
{
for (int y = 0; y < 15; y++)
{
// セル座標(x, y)に床タイルを置く
groundTilemap.SetTile(new Vector3Int(x, y, 0), floorTile);
}
}
// セル座標(5, 5)のタイルを消す(穴を開ける)
groundTilemap.SetTile(new Vector3Int(5, 5, 0), null);
}
}
ポイントは2つです。 「セル座標とワールド座標を混同しない」(SetTile はセル座標。マウス位置などのワールド座標からセルを知りたいときは tilemap.WorldToCell(worldPos) で変換します。逆は CellToWorld)と、 「消すときは null を渡す」(SetTile(位置, null) でそのマスが空になります。大量に置き換えるなら SetTilesBlock でまとめて処理すると速いです)。生成アルゴリズム自体は「どのセルを床にするか」を決めるだけ——ランダムウォークやセルオートマトンで座標を決め、あとは SetTile で敷くだけです。
おまけ:先に知っておくと良いこと
- タイルがぼやける・線が出る: タイル用スプライトは
Filter ModeをPoint (no filter)、CompressionをNoneにするとくっきりします。タイル同士の隙間に細い線が出るときは、スプライトのMesh TypeをFull Rectにするか、パディング付きのスプライトシートを使います。 - マップの上を敵に歩かせたい: TilemapベースのAI経路探索は、Unity公式の2D用NavMeshは標準対応が弱いため、A*系アセットやグリッド探索を自作するのが一般的です。3Dの経路探索は NavMeshでAIパスファインディング を参照してください。
- 広いマップはカメラでスクロール: 画面より大きいマップは Cinemachine でプレイヤーを追従させて見せます。Confinerで端を見せない設定も定番です。
- Isometric(クォータービュー)も作れる:
2D Object > Tilemap > Isometricを選ぶと、斜め見下ろしのタイルマップになります。基本操作は同じで、Grid のCell Layoutが変わるだけです。
まとめ
- Grid(格子)・Tilemap(地図)・Tile Palette(絵の具箱)の3部品でマップを作る。パレットは複数のTilemapで共有できる
- 当たり判定は
Tilemap Collider 2D+Composite Collider 2D(Rigidbody 2DはStatic)。継ぎ目の引っかかりが消え、動作も軽くなる - 地面・装飾は 役割ごとにTilemapを分け、Sorting Layer / Order in Layer で前後を制御する
- Rule Tile(2D Tilemap Extras)で境界タイルを自動配置。塗るだけで角や縁がつながる
SetTile(セル座標, タイル)でスクリプトからタイルを配置。消すときはnull
まずは床タイルを敷き、Tilemap Collider 2D + Composite Collider 2D を付けて、その上をプレイヤーが歩けるところまで作ってみてください。Tilemapは、2Dゲームのステージ作りの土台です。あなたの作りたい2Dの世界は、どんな地形からはじまりますか?
さらに学ぶために
- Spriteとスプライトシートを使いこなす ——タイルの元になるスプライトの準備
- Rigidbody2DとCollider2Dの基本 ——地形の上を歩くプレイヤー側の物理
- Cinemachineフォローカメラ実践 ——広いマップをスクロールで見せる
- Unity公式ドキュメント:Tilemap ——タイルマップの一次情報