Layer Collision Matrixによるレイヤー間衝突制御
Unityのレイヤーのマトリックス(Layer Collision Matrix)は、各レイヤー同士の衝突を許可または無効化するための設定です。3DではEdit > Project Settings > PhysicsのSettings内にあるSharedタブ、2DではEdit > Project Settings > Physics 2DのLayer Collision MatrixタブにLayer Collision Matrixとして表示されます。このマトリックスによって、特定のレイヤー同士が衝突するかしないかを細かく制御できます。
この記事は、Unity 6(6000.6)のProject Settingsの画面構成に沿って説明しています。

Layer Collision Matrixの設定条件と注意点
- 衝突を許可するレイヤーの選択
- マトリックス内のチェックボックスで、どのレイヤーが他のレイヤーと衝突するかを選択できます。
- 例:
PlayerレイヤーとObstacleレイヤーが互いにチェックされている場合、PlayerレイヤーのオブジェクトはObstacleレイヤーのオブジェクトと衝突します。
- チェックボックスの状態による制御
- チェックされている場合:2つのレイヤーは衝突が可能です。
- チェックが外れている場合:2つのレイヤーはお互いを無視し、衝突イベント(
OnCollisionEnterやOnTriggerEnterなど)も発生しません。
- パフォーマンス向上のための無効化
- 衝突判定が不要なレイヤー間は、チェックを外すことで物理エンジンの計算負荷を軽減できます。例:
EnemyレイヤーとCollectibleレイヤーの衝突を無効化することで、無駄な計算を省くことができます。Unityのドキュメントでも、レイヤー単位で衝突の組み合わせを絞ると、毎フレームの重なり判定や衝突計算の数を減らせると説明されています。
- 衝突判定が不要なレイヤー間は、チェックを外すことで物理エンジンの計算負荷を軽減できます。例:
- トリガーと衝突イベントの発生条件
- Layer Collision Matrixで無効化されているレイヤー同士は、
OnTriggerEnterやOnCollisionEnterなどのイベントも発生しません。イベントが発生しない場合、まずこの設定を確認するのが有効です。
- Layer Collision Matrixで無効化されているレイヤー同士は、
- 3Dと2Dの独立した設定
- Unityでは3Dと2Dの物理エンジンは独立しているため、3D(
RigidbodyとCollider)のLayer Collision MatrixはPhysicsのSettings内のSharedタブ、2D(Rigidbody 2DとCollider 2D)はPhysics 2DのLayer Collision Matrixタブに設定が反映されます。3D/2Dどちらのオブジェクトを扱うかに応じて、適切な画面でマトリックスを設定する必要があります。
- Unityでは3Dと2Dの物理エンジンは独立しているため、3D(
- コライダーごとの上書き(Layer Overrides)
- Colliderコンポーネントの
Layer OverridesでInclude LayersやExclude Layersを指定すると、プロジェクト全体のLayer Collision Matrixの設定を、そのコライダーだけ上書きできます。 - 上書きの設定が競合した場合は、
Layer Override Priorityの値が大きいコライダーの設定が使われます。Collider 2Dにも同様のLayer Overridesがあります。
- Colliderコンポーネントの
Layer Collision Matrixの設定例
| レイヤー | Player | Enemy | Background | Collectible |
|---|---|---|---|---|
| Player | ✅ | ✅ | ✅ | ✅ |
| Enemy | ✅ | ✅ | ✅ | ❌ |
| Background | ✅ | ✅ | ✅ | ✅ |
| Collectible | ✅ | ❌ | ✅ | ❌ |
- この設定例では、
PlayerはEnemy・Background・Collectibleと判定が行われ、コインを取得できます。EnemyはCollectibleとの判定が行われないため、コインをすり抜けます。
設定変更の手順
- 衝突させたいGameObjectを選び、Inspector上部の
Layerで使用するレイヤーを設定します。新しいレイヤーはAdd Layer...から追加できます。 - Unityエディタで、
Edit > Project Settings > Physicsを開き、Settings内のSharedタブを選びます。 Layer Collision Matrixの各レイヤー同士の交差点のチェックボックスを使用して、必要なレイヤー間の衝突を有効/無効にします。- 2Dの場合は、
Edit > Project Settings > Physics 2DのLayer Collision Matrixタブで同様に設定します。
これらの設定を適切に行うことで、Unityプロジェクト内での物理挙動やイベント発生の制御を効率的に管理することができます。
訪問数 214 回, 今日の訪問数 1回









ディスカッション
コメント一覧
まだ、コメントがありません