【Unity】OnTriggerEnterとOnCollisoinEnterの違い

Colliderの接触検出イベントにはOnCollisionEnterとOnTriggerEnterの2種類があります。その2つの違いを簡単にまとめてみます。

OnCollisionEnter

IsTriggerがOFFのCollider同士が接触したときに発生するイベント。
IsTriggerはデフォルトがOFFなので、設定しなければこちらが発生します。

OnCollisionStay:Collider同士が接触し続けているときに発生するイベント。
OnCollisionExit : Collider同士が 触れ合うのをやめたときに発生するイベント。

Collider同士の距離が、Default Contact Offset以下になると、接触したと判定されれます。この値は、[ProjectSettings]→[Physics]→[Default Contact Offset]で設定できます。

OnTriggerEnter

IsTriggerがONに設定されたColliderに、他のColliderが接触したときに発生するイベント。IsTriggerがONに設定されたColliderは、衝突判定が消え他のColliderをすり抜けるようになります。自動ドアのセンサー、廊下のある地点を通過するとガラスが割れる、などイベント発生のトリガーに使えます。

IsTriggerをONにしたCollider同士でもイベントが発生します。

OnTriggerStay:Collider同士が接触し続けているときに発生するイベント。
OnTriggerExit : Collider同士が 触れ合うのをやめたときに発生するイベント。

まとめ

ColliderA
IsTrigger
ColliderB
IsTrigger
OnCollisionEnterOnTriggerEnter
OFFOFFA、Bに発生×
ONOFF×A・Bに発生
OFFON×A・Bに発生
ONON×A・Bに発生

Unityを使い始めた当時は、OnCollisionEnterの存在を知らず、オブジェクト同士の接触イベントをOnTriggerEnterで取得していました。IsTriggerをONにすると、当然Colliderの衝突判定がなくなります。そこで全く同じ形状のIsTriggerがONのColliderを、無駄にくっつけていたのは、今となってはいい思い出です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA