OnTriggerEnterとOnCollisionEnterの違い / 衝突判定
物体同士の衝突の判定には、Collider.OnTriggerEnter()
、Collider.OnCollisionEnter()
を使用します。
Unity - スクリプトリファレンス: Collider.OnTriggerEnter(Collider)
Unity - スクリプトリファレンス: Collider.OnCollisionEnter(Collision)
その前に、以下のコンポーネントについて理解しておく必要があります。
◯◯Coliderコンポーネント
衝突判定の形状を設定するコンポーネントです。
isTrigger
isTriggerを設定すると、衝突時に発生する反発効果がなくなります。
RigiBodyコンポーネント
RigiBodyコンポーネントはAdd Component > Physics
から追加することができます。
use gravity
重力の計算を取り入れるかどうかを決めます。チェックすると物体に重力が働きます。
is kinematic
チェックをつけると物理演算が無効になります。 チェックを外すと、他の物体が衝突した時にその影響を受けるようになります。
OnTriggerEnter()
OnTriggerEnterで判定する場合は、Coliderコンポーネント内のisTriggerにチェックをつけて置く必要があります。 衝突した時の影響はなくなるので、すり抜ける時に発火します。
void OnTriggerEnter (Collider other) { Debug.Log("Hit" + other.gameObject.name); }
OnCollisionEnter()
OnCollisionEnterは衝突した際の反発がある際に発火するので、Coliderコンポーネント内のisTriggerにチェックは外します。 そして、反発させるためには、判定したいオブジェクトにRigiBodyコンポーネントを追加して置く必要があります。
void OnCollisionEnter (Collision collision) { Debug.Log("Hit" + collision.gameObject.name); }
参考URL
qiita.com