NavMeshAgent同士の衝突でOnCollisionEnterが動作しない場合の対処法

問題

NavMeshAgentがアタッチされている2つ以上のオブジェクトが衝突してもOnCollisionEnterが呼ばれない。

原因

  • NavMeshAgentを動かすためにはRigidbodyのisKinematicをオフにする必要がある
  • isKinematicがオフの物体同士の衝突ではOnCollisionEnterが呼ばれない

という2つの相反する要求が同時に発生しているからです。

解決法

  1. isKinematicをオンにする
  2. NavMeshAgentのMassを0 (厳密には1e-07)にする

参考