Layer Collision Matrixによるレイヤー間衝突制御
Unityのレイヤーのマトリックス(Layer Collision Matrix)は、各レイヤー同士の衝突を許可または無効化するための設定です。この設定はEdit > Project Settings > Physics
(またはPhysics 2D
)内にあり、Layer Collision Matrixとして表示されます。このマトリックスによって、特定のレイヤー同士が衝突するかしないかを細かく制御できます。
Layer Collision Matrixの設定条件と注意点
- 衝突を許可するレイヤーの選択
- マトリックス内のチェックボックスで、どのレイヤーが他のレイヤーと衝突するかを選択できます。
- 例:
Player
レイヤーとObstacle
レイヤーが互いにチェックされている場合、Player
レイヤーのオブジェクトはObstacle
レイヤーのオブジェクトと衝突します。
- チェックボックスの状態による制御
- チェックされている場合:2つのレイヤーは衝突が可能です。
- チェックが外れている場合:2つのレイヤーはお互いを無視し、衝突イベント(
OnTrigger
やOnCollision
)も発生しません。
- パフォーマンス向上のための無効化
- 衝突判定が不要なレイヤー間は、チェックを外すことで物理エンジンの計算負荷を軽減できます。例:
Player
レイヤーとBackground
レイヤーの衝突を無効化することで、無駄な計算を省くことができます。
- 衝突判定が不要なレイヤー間は、チェックを外すことで物理エンジンの計算負荷を軽減できます。例:
- トリガーと衝突イベントの発生条件
- Layer Collision Matrixで無効化されているレイヤー同士は、
OnTrigger
やOnCollision
イベントも発生しません。イベントが発生しない場合、まずこの設定を確認するのが有効です。
- Layer Collision Matrixで無効化されているレイヤー同士は、
- 3Dと2Dの独立した設定
- Unityでは3Dと2Dの物理エンジンは独立しているため、3Dオブジェクトの
Layer Collision Matrix
はPhysics
、2DオブジェクトはPhysics 2D
に設定が反映されます。3D/2Dどちらのオブジェクトを扱うかに応じて、適切な項目でマトリックスを設定する必要があります。
- Unityでは3Dと2Dの物理エンジンは独立しているため、3Dオブジェクトの
Layer Collision Matrixの設定例
レイヤー | Player | Enemy | Background | Collectible |
---|---|---|---|---|
Player | ✅ | ✅ | ❌ | ✅ |
Enemy | ✅ | ❌ | ❌ | ❌ |
Background | ❌ | ❌ | ❌ | ❌ |
Collectible | ✅ | ❌ | ❌ | ❌ |
- この設定例では、
Player
とEnemy
、Player
とCollectible
が衝突可能で、Background
とは衝突しないようになっています。
設定変更の手順
- Unityエディタで、
Edit > Project Settings > Physics
を開きます。 Layer Collision Matrix
の各レイヤー同士の交差点のチェックボックスを使用して、必要なレイヤー間の衝突を有効/無効にします。
これらの設定を適切に行うことで、Unityプロジェクト内での物理挙動やイベント発生の制御を効率的に管理することができます。
ディスカッション
コメント一覧
まだ、コメントがありません