衝突イベントは、2 つの非トリガーコライダーが接触すると発生します。
衝突イベントの使用例を以下に示します。
衝突イベントの処理には、主に以下の API 関数が関係します。
Collider.OnCollisionEnter:Unity は、2 つのコライダーが最初に接触したときに、各コライダーでこの関数を呼び出します。Collider.OnCollisionStay:Unity は、2 つのコライダーが接触している間、物理演算が更新されるたびに各コライダーで 1 回この関数を呼び出します。Collider.OnCollisionExit:Unity は、2 つのコライダーの接触が終了したときに、各コライダーでこの関数を呼び出します。衝突イベントの場合、関連するオブジェクトの少なくとも一方に動的物理演算ボディ (つまり、Is Kinematic が無効になっている Rigidbody または ArticulationBody) が必要です。衝突状態のゲームオブジェクトの両方がキネマティック物理演算ボディの場合、この衝突で OnCollision 関数は呼び出されません。
以下の例では、Unity が各関数を呼び出すときにコンソールにメッセージを表示します。
using UnityEngine;
using System.Collections;
public class DoorObject : MonoBehaviour
{
// “other” refers to the collider that is touching this collider
void OnCollisionEnter (Collider other)
{
Debug.Log ("A collider has made contact with the DoorObject Collider");
}
void OnCollisionStay (Collider other)
{
Debug.Log ("A collider is in contact with the DoorObject Collider");
}
void OnCollisionExit (Collider other)
{
Debug.Log ("A collider has ceased contact with the DoorObject Collider");
}
}
OnCollision イベントの実用的なアプリケーションの例については、コライダーイベントのスクリプト例 を参照してください。