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つのレイヤーはお互いを無視し、衝突イベント(OnTriggerOnCollision)も発生しません。
  • パフォーマンス向上のための無効化
    • 衝突判定が不要なレイヤー間は、チェックを外すことで物理エンジンの計算負荷を軽減できます。例:PlayerレイヤーとBackgroundレイヤーの衝突を無効化することで、無駄な計算を省くことができます。
  • トリガーと衝突イベントの発生条件
    • Layer Collision Matrixで無効化されているレイヤー同士は、OnTriggerOnCollisionイベントも発生しません。イベントが発生しない場合、まずこの設定を確認するのが有効です。
  • 3Dと2Dの独立した設定
    • Unityでは3Dと2Dの物理エンジンは独立しているため、3DオブジェクトのLayer Collision MatrixPhysics、2DオブジェクトはPhysics 2Dに設定が反映されます。3D/2Dどちらのオブジェクトを扱うかに応じて、適切な項目でマトリックスを設定する必要があります。

Layer Collision Matrixの設定例

レイヤーPlayerEnemyBackgroundCollectible
Player
Enemy
Background
Collectible
  • この設定例では、PlayerEnemyPlayerCollectibleが衝突可能で、Backgroundとは衝突しないようになっています。

設定変更の手順

  1. Unityエディタで、Edit > Project Settings > Physicsを開きます。
  2. Layer Collision Matrixの各レイヤー同士の交差点のチェックボックスを使用して、必要なレイヤー間の衝突を有効/無効にします。

これらの設定を適切に行うことで、Unityプロジェクト内での物理挙動やイベント発生の制御を効率的に管理することができます。

Unity,イベント

Posted by hidepon