今回からいよいよ「マップづくり」に挑戦します。Tilemapを使えば、床や地形をペイント感覚で配置できるので、ステージ制作が一気に楽になります🦖
↓実装イメージ↓

この記事でやること
- Tilemapを作成して床タイルを描く
- TilemapCollider2D & CompositeCollider2D で当たり判定をまとめる
- Floorレイヤーを設定してプレイヤーの接地判定に使えるようにする
① Grid と Tilemap を作成する
まずはHierarchyからTilemapを追加します。
- Hierarchyで右クリック → 2D Object → Tilemap → Rectangular を選択
- 親オブジェクト:Grid
- 子オブジェクト:Tilemap(名前を
Tilemap_Ground
に変更)
- Gridはセルサイズ
1,1
のままでOKです。


👉 これで「床を描けるキャンバス」が用意できました。
② タイルパレットを作る
描画する用のタイルパレットを作っていきます!
- メニューから Window → 2D → Tile Palette を開く
- Create New Palette を選び、名前を
GroundPalette
にする - 保存先を求められるので、
Assets/Tilemap
などに指定 - Projectビューで床用のタイル画像をドラッグし、パレットに登録


👉Projectビューで床用のタイル画像をドラッグすることでTilemapにブラシで床をペイントできるようになります。
(初回のみ Tile
アセットが生成されるので保存フォルダを指定)
👉今回はAssertStoreで無料素材をダウンロードしたものを使用します。
【使用したTilemap】
https://assetstore.unity.com/packages/2d/characters/simple-2d-platformer-assets-pack-188518#description
③ 床を描いてみる
Tilemapでマップを作成していくので、以前まで使用していたHierarchyの床オブジェクトは削除もしくは非アクティブにします。
- Hierarchyの Tilemap_Ground を選択
- Tile Paletteで床タイルを選択し、Sceneビューにペイント
- Gridのマス目に沿って床を感覚的に描けます✏️
👇こんな感じで自由に作成してください

④ 当たり判定をつける
床にプレイヤーが乗れるように Collider を追加します。
Tilemap_Ground
を選択し、Add Component →Tilemap Collider 2D
を追加- Composite Collider 2D を追加
Used By Composite
を ON にする(TilemapCollider2Dが自動で無効化されます)- Rigidbody2Dも自動で追加されます(Composite Collider 2Dを使用するのに必要なため)
- Rigidbody2Dの設定
Body Type
→ Static に設定(動かない床にするため)
Tilemap Collider 2D
だけでもいけますが、タイルとタイルの間にプレイヤーが引っかかってしまうことがあるので、それを防ぐためにComposite Collider 2D を使用します。Used By Composite
を ON にすることで、フロアの当たり判定が一つにまとまり外枠だけになります📝
Used By Composite
が OFF:タイルのマス目上一つ一つに当たり判定がついている

Used By Composite
を ON:タイルが一つにまとまった状態で当たり判定がついている

👉 これで描いた床タイル全体が一つの当たり判定としてまとまります。
⑤ Floorレイヤーを作成・設定する
プレイヤーの接地判定と区別するために Floorレイヤー を作ります。
(前回の解説でFloorレイヤーを既に作成済の場合は以下の3番だけでOKです🙆)
- 任意のオブジェクトの Inspector → Layer → Add Layer… を開く
- 空欄に Floor と入力
Tilemap_Ground
のLayerを Floor に変更

⑥動作確認
作成したマップにプレイヤーが歩行できるようになりました!

⑦ まとめ
- Tilemap に床を描くとマップが簡単に作れる
- TilemapCollider2D + CompositeCollider2D + Rigidbody2D(Static) で当たり判定をまとめる
- Floorレイヤー を設定して、プレイヤーの接地判定と連携
このままだとカメラワークが固定のままなので、次回はプレイヤーに合わせてカメラを追従する処理を作っていこうと思います!
コメント