【Unity入門⑤】Tilemapでマップを作ろう

Unity入門

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

↓実装イメージ↓

この記事でやること

  • Tilemapを作成して床タイルを描く
  • TilemapCollider2D & CompositeCollider2D で当たり判定をまとめる
  • Floorレイヤーを設定してプレイヤーの接地判定に使えるようにする

① Grid と Tilemap を作成する

まずはHierarchyからTilemapを追加します。

  1. Hierarchyで右クリック → 2D Object → Tilemap → Rectangular を選択
    • 親オブジェクト:Grid
    • 子オブジェクト:Tilemap(名前を Tilemap_Ground に変更)
  2. Gridはセルサイズ 1,1 のままでOKです。

👉 これで「床を描けるキャンバス」が用意できました。


② タイルパレットを作る

描画する用のタイルパレットを作っていきます!

  1. メニューから Window → 2D → Tile Palette を開く
  2. Create New Palette を選び、名前を GroundPalette にする
  3. 保存先を求められるので、 Assets/Tilemapなどに指定
  4. Projectビューで床用のタイル画像をドラッグし、パレットに登録

👉Projectビューで床用のタイル画像をドラッグすることでTilemapにブラシで床をペイントできるようになります。
(初回のみ Tile アセットが生成されるので保存フォルダを指定)
👉今回はAssertStoreで無料素材をダウンロードしたものを使用します。

【使用したTilemap】
https://assetstore.unity.com/packages/2d/characters/simple-2d-platformer-assets-pack-188518#description


③ 床を描いてみる

Tilemapでマップを作成していくので、以前まで使用していたHierarchyの床オブジェクトは削除もしくは非アクティブにします。

  1. Hierarchyの Tilemap_Ground を選択
  2. Tile Paletteで床タイルを選択し、Sceneビューにペイント
    • Gridのマス目に沿って床を感覚的に描けます✏️

👇こんな感じで自由に作成してください


④ 当たり判定をつける

床にプレイヤーが乗れるように Collider を追加します。

  1. Tilemap_Ground を選択し、Add Component → Tilemap Collider 2D を追加
  2. Composite Collider 2D を追加
    • Used By CompositeON にする(TilemapCollider2Dが自動で無効化されます)
    • Rigidbody2Dも自動で追加されます(Composite Collider 2Dを使用するのに必要なため)
  3. Rigidbody2Dの設定
    • Body TypeStatic に設定(動かない床にするため)

Tilemap Collider 2Dだけでもいけますが、タイルとタイルの間にプレイヤーが引っかかってしまうことがあるので、それを防ぐためにComposite Collider 2D を使用します。
Used By CompositeON にすることで、フロアの当たり判定が一つにまとまり外枠だけになります📝

Used By CompositeOFF:タイルのマス目上一つ一つに当たり判定がついている

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

👉 これで描いた床タイル全体が一つの当たり判定としてまとまります。


⑤ Floorレイヤーを作成・設定する

プレイヤーの接地判定と区別するために Floorレイヤー を作ります。
(前回の解説でFloorレイヤーを既に作成済の場合は以下の3番だけでOKです🙆)

  1. 任意のオブジェクトの Inspector → Layer → Add Layer… を開く
  2. 空欄に Floor と入力
  3. Tilemap_Ground のLayerを Floor に変更

⑥動作確認

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


⑦ まとめ

  • Tilemap に床を描くとマップが簡単に作れる
  • TilemapCollider2D + CompositeCollider2D + Rigidbody2D(Static) で当たり判定をまとめる
  • Floorレイヤー を設定して、プレイヤーの接地判定と連携

このままだとカメラワークが固定のままなので、次回はプレイヤーに合わせてカメラを追従する処理を作っていこうと思います!

コメント

タイトルとURLをコピーしました