Unity 6のTilemap入門|タイルを並べて2Dステージを作ろう

広告

「Unityで、ブロックを並べるように2Dのステージを作りたい」。そんなときに使うのが Tilemap(タイルマップ) です。

小さな画像を格子状に配置して、床や壁、足場を作れます。画像を1枚ずつGameObjectとして並べる作業を、ブラシで塗るような操作に置き換えられます。

この記事では、画像を取り込むところから、床・段差・浮き足場を配置し、物理的に乗れる地形にするところまで進めます。基本のステージ作成にC#のコードは使いません。

操作の基準はUnity 6.0(6000.0)です。2026年10月11日に公式ドキュメントを確認しました。Unity 6の別の版やパッケージ構成ではメニュー名・配置が異なる場合があります。メニュー名は英語表記を併記します。本記事の図は説明用のオリジナル図解です。

動画:床の配置からTile Palette、当たり判定、Rule Tileまでの流れ(24秒・音声なし・実画面ではない説明用アニメーション)

まず覚えたい5つの役割

名前役割たとえるなら
Gridセルの大きさや並び方を決める方眼紙
TilemapどのセルにどのTileを置くかを管理する方眼紙に描く地形のレイヤー
Tile PaletteTileを選び、配置・消去などを行う編集ウィンドウ絵の具のパレットと道具箱
Collider 2D2D物理の衝突形状。TilemapではTilemap Collider 2Dを使う見えない床や壁
Rule Tile周囲のTileの条件で表示などを切り替えるTileつながり方を判断するタイル

Sprite(スプライト)は画像素材、Tile(タイル)はTilemapへ配置するアセットです。TileにはSpriteやCollider Typeなどの情報を設定します。配置したTileの表示は、Tilemapと同じGameObjectにある Tilemap Renderer が担当します。詳細はTileアセットの公式リファレンスを参照してください。

画像素材からTile Paletteを経由してGrid配下のTilemapへ配置し、RendererとColliderで表示と衝突を処理する関係図
図1:素材の準備、セルへの配置、表示と当たり判定は、それぞれ別の役割です。

1.2Dプロジェクトとパッケージを準備する

Unity HubからUnity 6の2Dテンプレートでプロジェクトを作成します。既存のプロジェクトでも作業できます。

Package Managerを開き、次のパッケージが入っているか確認しましょう。Unity 6.0では Window → Package Management → Package Manager から開きます。必要なものが見つからないときは、一覧の対象を Unity Registry にして探します。

パッケージパッケージID今回の用途
2D Tilemap Editorcom.unity.2d.tilemapTilemapとTile Paletteの編集
2D Spritecom.unity.2d.spriteSprite Editorでの画像の分割など
2D Tilemap Extrascom.unity.2d.tilemap.extras後半のRule Tile。基本の配置には不要

2Dテンプレートでは2D Tilemap Editorが自動で導入されますが、既存プロジェクトでは確認してください。2D Tilemap Editorの公式情報

Rule Tileは2D Tilemap Extrasに含まれます。Unity 6.0向けの公式一覧では4.1.2がReleasedとして掲載されています。別のUnity 6の版にこの番号を固定せず、そのEditorに対応するReleased版を選びましょう。2D Tilemap Extrasの公式情報

素材を整理しやすいように、Projectウィンドウで次のフォルダーを用意します。

Assets/
  Art/Tiles/       ← PNG画像
  Tiles/          ← Tileアセット
  Palettes/       ← パレット
  Scenes/         ← シーン

2.タイル画像をSpriteとして取り込む

今回は 32×32ピクセルの正方形を1セルに配置することにします。手元の素材がなければ、この記事の添付素材 sample-ground-top-32.png と sample-ground-fill-32.png を使えます。どちらも余白のない32×32画像です。

PNGを Assets/Art/Tiles に入れ、Projectウィンドウで画像を選択します。Inspectorで以下を設定して Apply を押します。

設定今回の値理由
Texture TypeSprite (2D and UI)2D画像として扱う
Sprite ModeSingle1枚のPNGに1個のタイルがあるため
Pixels Per Unit3232ピクセルをワールドの1ユニットにする
Filter ModePoint (no filter)今回のドット絵の輪郭を保つ
CompressionNone練習では圧縮による見た目の変化を避ける
Unity 6のProjectウィンドウでPNGを選び、InspectorのImport SettingsでSprite (2D and UI)、Single、Pixels Per Unit 32、Point (no filter)、Compression Noneを設定してApplyした状態
図:Import Settingsの設定例(Unity 6000.6で撮影した実画面)。変更後にApplyを押します。

Pixels Per Unit(PPU)は「1ユニットに何ピクセルを割り当てるか」です。32ピクセル幅をPPU 32で取り込むと幅1ユニット、PPU 100なら幅0.32ユニットになります。今回のGridのセル幅1に合わせるにはPPU 32が分かりやすい設定です。素材が64×64なら、同じ考え方でPPU 64にします。Spriteのインポート設定

1枚の画像に複数のタイルが入っている場合

タイルシートの場合は、Sprite Modeを Multiple にしてApplyを押し、Sprite Editor を開きます。32×32のタイルが余白なしで並ぶシートなら、Sliceで Type → Grid by Cell Size、Pixel Size → X:32、Y:32 を選び、SliceとApplyを実行します。

余白やタイル間の隙間がある素材では、OffsetやPaddingも合わせます。分割後は、Projectウィンドウで画像を展開すると個別のSpriteを選べます。Sprite Editorを開けない場合は、2D Spriteの導入を確認してください。公式:Spriteの自動スライス

3.GridとTilemapを作る

Hierarchyウィンドウの空いているところを右クリックし、2D Object → Tilemap → Rectangular を選びます。

Gridが親、Tilemapが子として作成されます。Tilemapを Ground に名前変更しましょう。

Grid
└ Ground

Gridを選び、Cell Sizeは X:1、Y:1、Z:0、Cell Gapは0のままにします。今回の練習ではGridとGroundのTransformをPosition 0、Rotation 0、Scale 1にそろえます。

Rectangularは長方形のセルを使うTilemapです。まずはこれを使うと、床や壁の位置を理解しやすくなります。公式:Tilemapの作成と配置

4.Tile Paletteに素材を登録する

Assets → Create → 2D → Tile Palette からRectangularのパレットを作り、GroundPalette と名付けて Assets/Palettes に保存します。

次に Window → 2D → Tile Palette を開き、Active Palette でGroundPaletteを選びます。続けて、次の順にSpriteを登録します。

  1. Projectウィンドウで Assets/Art/Tiles を開き、Spriteをパレットへドラッグします。添付素材なら sample-ground-top-32 と sample-ground-fill-32 の2つです。
  2. 保存先を選ぶダイアログが開くので、Assets/Tiles を選びます。
  3. パレットにTileが登録され、Assets/Tiles にTileアセットが作られます。

UnityがSpriteからTileアセットを作成します。Multipleの画像をドラッグすると、分割された子SpriteごとのTileが作られます。公式:Tile Paletteの作成

ここで大切なのが、次の2つの選択です。

  • Active Palette:どの素材一覧を使うか。
  • Active Target:どのTilemapへ描くか。今回はGroundを選びます。

パレットを作っただけでは、シーンの地形はまだできていません。次の手順でSceneビューに配置します。

5.床・段差・浮き足場を塗る

Sceneビューを2D表示にし、GridまたはGroundを選択して格子を表示します。Tile Paletteで床用Tileを選び、Paint with Active Brush(ブラシ)を選択します。

最初は次の順で小さなステージを作ってみましょう。

  1. Sceneビューで横に18セルほどドラッグして床を作ります。
  2. 床の下にも1段並べて、厚みを付けます。
  3. 床の一部の上に3セル並べ、1段高い場所を作ります。
  4. 床から少し離れた上方に4セル並べ、浮き足場を作ります。
  5. 間違えたセルは Erase with Active Brush(消しゴム)で消します。

添付素材なら上面に草付きTile、下段に土だけのTileを使うと、床の向きが分かりやすくなります。

18セル幅の床に3セルの段差と4セルの浮き足場を加えた配置例
図2:最初は小さな床と段差を作り、パレットでの選択とSceneへの配置に慣れましょう。

装飾は別のTilemapへ分ける

Gridを右クリックして同じRectangularのTilemapを追加し、Decoration と名付けます。装飾用Tileはそちらへ描きます。

Grid
├ Ground        ← 床・壁。衝突あり
└ Decoration    ← 草・小物。衝突なし

重なり順はTilemap Rendererの Sorting Layer と Order in Layer で調整できます。同じSorting Layerなら、たとえばGroundを0、Decorationを1にすると装飾が手前になります。Tilemap Rendererの公式リファレンス描画順のSorting Layerと、物理判定に使うGameObjectのLayerは別の設定です。

6.床にTilemap Collider 2Dを付ける

このままでは画像が表示されるだけで、落下するキャラクターを支えられません。

HierarchyでGroundを選択し、Inspectorの Add Component から Tilemap Collider 2D を追加します。Tileの設定に応じて衝突形状が生成されます。公式:タイルの衝突判定を有効にする

Projectウィンドウで生成したTileアセットを選び、Collider Type も確認します。

Collider Type作られる形状用途
None形状を作らない装飾
GridGridのセル形状四角い床や壁
SpriteSpriteの物理形状坂や不規則な形の地形

今回は床Tileを Grid にします。Spriteでは透明部分を含む画像の見た目と物理形状が一致するとは限りません。必要ならSprite EditorのCustom Physics Shapeで形を調整します。TileアセットのCollider Type

隣接する当たり判定をCompositeでまとめる

床をたくさん並べる場合は、Groundに Composite Collider 2D を追加します。同じGameObjectの Rigidbody 2D も確認し、動かない地形では Body Type → Static にします。Rigidbody 2Dがなければ追加してください。

続いてTilemap Collider 2Dの Composite Operation → Merge を選びます。Composite Collider 2DのGeometry Typeは、今回の四角い地形では Polygons にします。

隣接する形状を結合して、セルごとの境界をまとめられます。旧版の解説にある「Used by Composite」を探して見つからない場合は、Composite Operationを確認してください。Tilemap Collider 2Dの設定、Composite Collider 2Dの設定

セルごとの四角い衝突形状とComposite Collider 2Dで結合した床の形状の比較
図3:Grid型の床Tileを結合する概念図。GroundのRigidbody 2DはStaticに設定します。

移動スクリプトなしで衝突を確かめる

Projectウィンドウの添付素材SpriteをHierarchyへドラッグして、名前を TestBody にします。Sceneビューで床の上へ移動し、ScaleをX:0.8、Y:0.8、Z:1にします。Box Collider 2D と Rigidbody 2D を追加し、Body Typeを Dynamic、Gravity Scaleを1にします。回転させたくない場合はConstraintsのFreeze Rotation Zを有効にします。

Playを押し、重力で落ちたTestBodyが床で止まるか確認してください。TestBodyとGroundのIs Triggerは無効にします。Compositeへ結合した床では、Is TriggerをComposite Collider 2D側で確認します。

衝突を見るだけならキャラクター移動処理は不要です。床、段差、浮き足場の上へTestBodyを置き直して、順に確かめましょう。Play中の変更は終了すると戻るため、地形の編集はPlayを止めて行います。

7.Rule Tileでつながり方を自動化する

手動配置に慣れると、「上面・中央・角の画像を毎回選ぶのが大変」と感じるようになります。そこで使うのが Rule Tile です。

Rule Tileは、周囲のセルに置かれたTileを調べ、条件に合うSpriteなどを選びます。画像から角を自動生成する機能ではなく、使う画像と切り替え条件を自分で設定する仕組みです。

2D Tilemap Extrasを導入したら、Projectウィンドウを右クリックし、Create → 2D → Tiles → Rule Tile → Rule Tile から通常のRule Tileを作成します。名前は GroundRule とします。メニューの階層は導入版によって異なる場合があります。公式:Rule Tileの作成

まずは「上が空いているところだけ草の上面にする」という小さなルールを試します。

  1. Default Spriteに土だけのSpriteを設定します。
  2. Default ColliderをGridにします。
  3. Tiling Rulesで + を押し、ルールを1つ追加します。
  4. 3×3の条件欄の上中央を Not This にします。他の周囲セルはDon’t Careのままにします。
  5. そのルールのOutputをSingle、Spriteを草付きの画像、ColliderをGridにします。
  6. GroundRuleアセットをTile Paletteへ追加し、Groundに2段の地形を塗ります。

This は同じRule Tile、Not This は同じRule Tileではないこと、Don’t Care はその位置を条件にしないことを表します。条件欄をクリックして表示を切り替え、Thisは緑の矢印、Not Thisは赤い×、Don’t Careは空欄にします。Rule Tile Inspectorの公式リファレンスNot Thisには空セルだけでなく別のTileも含まれます。この例ではGroundRuleだけで地形を描くため、上が空いた場所に草付き画像が出ます。

複数のルールは上から順に調べられます。条件が重なるときは並び順にも注意し、意図する条件を優先させましょう。角や左右端を追加する場合も、まず1条件ずつ試すと原因を追いやすくなります。

つまずいたときの確認表

症状まず確認すること
Tilemapのメニューがない2D Tilemap Editorと2D Spriteの導入状態
Sprite Editorが開けない2D Sprite、Texture Type、Applyの実行
タイルシート全体が1個の画像になるSprite ModeがMultipleか、SliceとApplyが済んでいるか
小さすぎる・セルからはみ出す画像サイズ÷PPU、GridのCell Size、TransformのScale
描いても反応しないActive Paletteの選択、Tileの選択、ブラシ、Active Target、Sceneビューで描いているか
別の地形に描かれるActive TargetがGroundかDecorationか
Sceneでは見えるのにGameでは見えないカメラの範囲、位置、Culling Mask、Rendererの有効状態。URPのLit素材なら2Dライトも確認
床をすり抜けるGroundのCollider、TileのCollider Type、TestBodyのCollider 2DとDynamic Rigidbody 2D、Is Trigger
当たり判定が結合されない同じGameObject上のCompositeとRigidbody 2D、Composite OperationがMergeか
Rule Tileが切り替わらない通常Tileではなく同じGroundRuleを塗っているか、周囲の条件、Sprite、ルール順
Play終了後に編集が消えたPlay中に編集していなかったか

2Dと3Dの物理は別系統です。Box Colliderではなく Box Collider 2D、Rigidbodyではなく Rigidbody 2D を使います。床をすり抜ける場合は、Physics 2DのLayer Collision MatrixやColliderのLayer Overridesで衝突が除外されていないかも確認してください。

タイル間に線が見えるときは、まず画像の余白・Slice範囲・PPU・Cell Gap・Filter Modeを調べます。それでも残る場合はカメラの位置や拡大率、Sprite Atlasの余白も切り分けます。原因を確かめずに全TileのScaleを広げると、見た目と衝突形状の関係が分かりにくくなるため、設定を1つずつ確認しましょう。

次に試してみよう

まずは「床が描ける」「別のTilemapに装飾を置ける」「落下する物体が床で止まる」の3つを目標にしてみてください。

ここまでできたら、Rule Tileで端や角の条件を増やす、背景用Tilemapを追加する、キャラクター移動を組み合わせる、といった順に広げられます。小さなステージで操作と当たり判定を確認してから、大きなマップへ進みましょう。

訪問数 6 回, 今日の訪問数 6回

広告

Unity2D,Unity6

Posted by hidepon