Unity-トリガーとコライダーの違い(OnTriggerEnterとOnCollisionEnterの違い)



Unity Difference Between Trigger



一般的なレースゲームでは、小道具がトリガーに使用され、車は衝突型加速器を使用します。

引き金

ゲームシーンでは、トリガー効果を使用する必要があることがよくあります。たとえば、レーシングゲームの滑走路には小道具があります。小道具に触れることでそれを得ることができます。ただし、車と道路が直接衝突する必要はないため、車の速度が影響を受け、ゲーム体験が非常に悪くなります。したがって、通常、トリガーを使用してイベントを検出します。 トリガーを使用してIsTriggerオブジェクトが通過できることを確認することに注意してください。 それ以外の場合、コードは正しく記述されるまで実行されません。
画像
トリガーメソッド(キューブに配置されたスクリプト)



パブリッククラステスト:MonoBehaviour
{{
void OnTriggerEnter(Collider other)
{{
print(“ 0”)
// InTriggerEnterは、タッチされると1回呼び出されます。
}
void OnTriggerExit(Collider other)
{{
print(“ 1”)
// InTriggerEnterは、タッチの最後に1回呼び出されます。
}
void OnTriggerStay(Collider other)
{{
print(“ 2”)
//タッチが終了しない限り呼び出します
}

}



テストシナリオでは、ボールを立方体の上部から落下させます(リジッドボディ-リジッドコンポーネントがボールに追加されます)。 OnTriggerStayが複数回実行され、その他は1回だけ実行されていることがわかります。 **。cubeはIsTriggerをチェックしました**
画像

2.コライダー

同様に、レースゲームの場合、他の車にぶつかりたいときは、バンパーカーと同じように衝突装置を使用します。このように、車はトリガーを使用できません。そうしないと、突然車が車の後ろから直接通過します。このゲームはとても奇妙です。 (衝突はIsTriggerをチェックする必要はありません)

衝突法
パブリッククラステスト:MonoBehaviour
{{
void OnCollisionEnter(Collision other)
{{
print(“ 0”)
// InCollisionEnterは、タッチされると1回呼び出されます。
}
void OnCollisionExit(衝突その他)
{{
print(“ 1”)
// InCollisionExitは、タッチの最後に1回呼び出されます。
}
void OnCollisionStay(Collision other)
{{
print(“ 2”)
//タッチが終了しない限り呼び出します
}



}

OnCollisionStayが実行されたときに15回停止したことがわかりましたが、モバイルボールOnCollisionStayが引き続き呼び出している限り、ボールが飛行機に落下したときにOnCollisionExitメソッドが呼び出されます。
.cubeはIsTriggerをチェックしません
画像

走っているときは、ボールのx軸の位置を変えて、ボールを平面に落とします。
画像