OnTrigger系関数の利用に関わるCollider Component内のIsTrigger

結論:『OnTrigger系関数を利用するときは、少なくとも片方の衝突ObjectのColliderのIsTriggerがTureであれば良い』


Unityでシューティングゲームを作っているときに、

  • 操作機の弾と敵機が衝突したら爆発
  • 敵機の弾と操作機が衝突したら爆発
  • 操作機と敵機が衝突したら爆発
  • 弾同士が接触しても物理的挙動が起こらない

という制御をしたいと思った。


で、今回は上記制御するにあたり、物理的挙動は全て不要だったので、結論的には、

  • 操作機のIsTriggerをTrue
  • 敵機のIsTriggerをTrue
  • 弾のIsTriggerをTrue

でOKであった。


Collider ComponentにあるIs Triggerは何かと言うと、 そのObjectがOnTrigger系関数を稼働させるトリガーになるかどうかというもの。
True: トリガーになる
False: トリガーにならない


IsTriggerをTrueにするとトリガーになる


そして、OnTriggerを発生させるための必要条件は他にも2つあり、 Rigidbody(2d) Componentを少なくとも片方の衝突Objectが有している必要がある。 RigidBodyというのは、物理的挙動を制御するComponent。


Rigidbody(2d) Componentを片方のObjectだけでもいいので有している必要がある


もう一つの必要条件は、 Collider Componentを両方の衝突Objectが有している必要があるということである。


Collider Componentは両方のObjectに必要


OnTrigger系関数の利用条件をまとめると、

  • 少なくとも片方のObjectのIsTriggerをTrueにする
  • 少なくとも片方のObjectにRigidbody(2d) Componentをアタッチ
  • 両方のObjectにCollider Componentをアタッチ

となる。