unity-tilemap-2d について
Unity 6.3 LTSで2Dタイルマップを作る開発者向けのスキルです。GridとTilemapの設定、ペイント、衝突判定、Rule Tiles、スクリプトによる実行時編集を扱います。
主な機能
- 01Gridと複数レイヤーのTilemap作成
- 02Tile Paletteでのペイント
- 03Tilemapコライダーの設定
- 04Rule Tilesによる自動配置
- 05スクリプトによる編集と一括配置
活用シーン
- 01背景・地面・前景を持つ2Dレベルの作成
- 02固体レイヤーへの統合コライダー追加
- 03スクリプトによる部屋や床領域の生成
- 04実行時のマス目更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gamedev-skills/ awesome-gamedev-agent-skills --skill unity-tilemap-2dインストール後、Claude Code で/unity-tilemap-2dを入力して読み込まれたか確認します。
詳細
Unity 2D Tilemap
Grid/Tilemap システム、Tile Palette、コライダー、実行時のペイントを使って、Unity 6.3 LTS でタイルベースの2Dレベルを作成し、スクリプトで操作します。対象は Unity 6.3 LTS(6000.3) です。
パッケージに関する注意: Tilemap のコア機能(
Grid、Tilemap、Tile、TilemapCollider2D)は標準搭載されています。Rule Tiles、Animated Tiles、Tile Palette ブラシは別パッケージ「2D Tilemap Extras」(com.unity.2d.tilemap.extras)に含まれています —RuleTileを使う前に、Package Manager からインストールしてください。
使用する場面
- タイルをペイントして2Dレベルを配置する場合、
Grid+Tilemapをセットアップする場合、マップにコリジョンを追加する場合、自動タイル配置に Rule Tiles を使う場合、またはスクリプトからタイルを生成・編集する場合に使用します。 - シーンに
Tilemapを子として持つGridが含まれる場合、または*.assetのタイル/パレットファイルが含まれる場合に使用します。
使用しない場面: レベル デザイン の実践(ペース配分、ブロックアウト、レイアウトの原則)→ level-design。3Dのタイル/グリッド配置 → Unity 独自の3Dツール(ProBuilder/グリッドブラシ。ここには専用スキルはありません)。タイル上を移動するプラットフォーマーのキャラクター → platformer / unity-physics。
基本的なワークフロー
- グリッドを作成: GameObject → 2D Object → Tilemap → Rectangular(
Gridの Cell Layout では、六角形やアイソメトリックのレベル向けに Hexagonal と Isometric も選べます)。これにより、子にTilemap(とTilemapRenderer)を持つGridが作成されます。レイヤーごと(背景、地面、前景)に Tilemap を1つ使い、各レンダラーのソートを設定します。 - Tile Palette を開き(Window → 2D → Tile Palette)、スライスしたスプライトシートをドラッグして
Tileアセットを作成し、ブラシツールでペイントします。 - ソリッドレイヤーに コリジョンを追加:
TilemapCollider2Dを追加します。コライダーを1つにまとめて(大幅に軽量化でき、隙間もなくなります)使用するには、CompositeCollider2D(および Static に設定したRigidbody2D)も追加し、タイルマップコライダーの Used By Composite を有効にします。 - Rule Tiles で自動タイル配置(2D Tilemap Extras)を行い、すべてのバリエーションを手作業で配置する代わりに、エッジや角に適切なスプライトが自動で選ばれるようにします。
- スクリプトで実行時に編集: セル座標(
Vector3Int)を使ってSetTile、GetTile、SetTilesBlockを呼び出し、Grid/Tilemapでワールド座標とセル座標を相互変換します。 - Play モードで 確認 します。コリジョン(Physics Debugger)、ソート順、そして一括編集後に
RefreshAllTilesが実行されたことを確認します。
パターン
1. 実行時にタイルをペイントする(セル座標)
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilePainter : MonoBehaviour
{
[SerializeField] private Tilemap tilemap; // assign the target Tilemap
[SerializeField] private TileBase groundTile;
// World position -> cell, then place a tile.
public void PaintAt(Vector3 worldPos)
{
Vector3Int cell = tilemap.WorldToCell(worldPos);
tilemap.SetTile(cell, groundTile);
}
public bool IsSolid(Vector3 worldPos)
=> tilemap.GetTile(tilemap.WorldToCell(worldPos)) != null;
}
2. 領域をまとめて塗りつぶす(セルごとの SetTile より高速)
// SetTilesBlock writes a whole BoundsInt in one call — use it for procedural rooms/floors.
public void FillFloor(Tilemap map, TileBase tile, int width, int height)
{
var bounds = new BoundsInt(0, 0, 0, width, height, 1);
var tiles = new TileBase[width * height];
for (int i = 0; i < tiles.Length; i++) tiles[i] = tile;
map.SetTilesBlock(bounds, tiles);
}
3. クリアと更新
tilemap.SetTile(cell, null); // null erases the tile at that cell
tilemap.RefreshTile(cell); // re-evaluate just this cell's rule/animated neighbors (cheap)
// RefreshAllTiles() re-evaluates the ENTIRE map — reserve it for full regenerations, not per-edit.
注意点
RuleTile型が見つからない — 標準搭載ではありません。Package Manager から 2D Tilemap Extras パッケージ(com.unity.2d.tilemap.extras)をインストールしてください。- タイルごとのコライダーでパフォーマンスが大幅に低下する/継ぎ目ができる — 静的な
Rigidbody2Dと Used By Composite を設定したCompositeCollider2Dを追加して、レイヤー全体を滑らかな1つの形状に統合します。 - ワールド座標とセル座標を混同する —
SetTile/GetTileが受け取るのはワールド座標ではなく、Vector3Intの セル座標 です。必ずWorldToCell/CellToWorldで変換してください。 - タイルがスプライトの背後/手前に予想外に描画される — 各
TilemapRendererの Sorting Layer と Order in Layer を設定してください。複数の Tilemap には明示的な描画順が必要です。 - スクリプトで編集した後に Rule Tiles/Animated Tiles が更新されない — 書き込み後に更新してください。ただし、少数の編集には対象を絞った
RefreshTile(cell)を使用します。RefreshAllTiles()はマップ上のすべてのタイルを再評価するため、大規模なレベルでは処理が停止することがあります。マップ全体を再生成する場合に限り、全体の更新を使用してください。 - 誤ったレイヤーにペイントしてしまう — Tile Palette のアクティブな対象 Tilemap にペイントされます。「Active Tilemap」のドロップダウンを確認してください。
参考資料
- 主なドキュメント:Unity Manual の「Tilemaps」
(
https://docs.unity3d.com/Manual/tilemaps/work-with-tilemaps/tilemap-reference.html)、ScriptReference/Tilemaps.Tilemap、および Rule Tile の参考資料となる 2D Tilemap Extras パッケージのマニュアル (https://docs.unity3d.com/Packages/[email protected]/manual/index.html)。 (@6.0は Unity 6.3 LTS に同梱されているバージョンです。以前の@1.6のドキュメントは Unity 2021 時代のプロジェクト向けです。)
関連スキル
level-design— エンジンに依存しないブロックアウト、ペース配分、タイル配置の実践。procedural-gen—SetTilesBlockに渡すタイルデータ(ノイズ、RNG、ダンジョン)の生成。platformer/roguelike— 移動や生成とこのスキルを組み合わせるジャンル。
コメント
Markdown 対応