【Unity】接触・衝突・当たり判定

 接触や衝突の判定には大きく2つ、 OnCollisionEnter ()【オンコリジョンエンター】かOnTriggerEnter()【オントリガーエンター】 のどちらかを利用できる。以下にそれぞれの特徴をまとめる。

CollisionTrigger
Colliderコンポーネント必要必要
Rigidbodyコンポーネントどちらかに必要どちらかに必要
is Triggerどちらも無効どちらかを有効
取得できる情報CollisionCollider
物理的影響影響あり影響なし

 これらはStart()【スタート】関数やUpdate()【アップデート】関数と別で宣言して利用する関数で、判定が起こったときに中に記述した処理を実行する。Enterの他にStay【ステイ】、Exit【イグジット】なども利用できる。それぞれの判定をまとめると以下の通り。

Enter接触した瞬間のみ
Stay接触している間常に
Exit離れた瞬間のみ

 使い分けとしては物理的影響の有無が大きい。具体的な例を出せば、
 ・着地しているときにダメージを与えたい→OnCollisionStay()
 ・自動ドアのセンサのように侵入を検知したい→OnTriggerEnter()
などがイメージしやすい。

 また、どちらも取得した情報からGameObjectを取得することができる。以下にそのサンプルを示す。

void OnCollisionEnter(Collision nantara){
   Debug.Log(nantara.gameObject.name);  //接触したオブジェクトの名前情報を表示
}

void OnTriggerEnter(Collider nantara){
   Debug.Log(nantara.gameObject.name);  //接触したオブジェクトの名前情報を表示
}

Leave a comment

コメントを残す

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

CAPTCHA