衝突時に呼ばれる関数について

ここでは衝突時に呼ばれる特殊な関数について説明します。これを使うと、ゲームオブジェクト同士が衝突したときの処理を簡単に作ることができます。


※この記事で使用しているUnityのバージョン:Unity2019.1

スポンサーリンク

OnCollision○○関数

コライダーを持つゲームオブジェクト同士が衝突したときに呼ばれます。関数は次の3つがあります。

  1. OnCollisionEnter
  2. OnCollisionStay
  3. OnCollisionExit

OnCollisionEnter

ゲームオブジェクト同士が衝突した瞬間に1回だけ呼ばれます。

OnCollisionStay

ゲームオブジェクト同士が衝突(接触)している間呼ばれ続けます。

OnCollisionExit

ゲームオブジェクト同士が離れた瞬間に1回だけ呼ばれます。

OnTrigger○○関数

コライダーの「Is Trigger」がONになっているときに呼ばれます。これを使うと、「ある範囲に入ったかどうか」などの処理を行うことができます。関数は次の3つがあります。

  1. OnTriggerEnter
  2. OnTriggerStay
  3. OnTriggerExit

OnTriggerEnter

他のゲームオブジェクトがトリガー内に入った瞬間に1回だけ呼ばれます。

OnTriggerStay

他のゲームオブジェクトがトリガー内にある間呼ばれ続けます。

OnTriggerExit

他のゲームオブジェクトがトリガーから出た瞬間に1回だけ呼ばれます。

具体的な使い方

例えば、あるゲームオブジェクトに衝突した別のゲームオブジェクトの名前を取得し、デバッグログに表示する場合は次のようなC#スクリプトを書けばOKです。

using UnityEngine;

public class TestScript : MonoBehaviour
{

  private void OnCollisionEnter(Collision collision)
  {
    Debug.Log(collision.gameObject.name);
  }

}

衝突した相手のコリジョンが「collision」という変数に入るので、あとはそれを使って名前を取得しています。

このように衝突検知メソッドを使えば衝突時の処理をとても簡単に書くことができます。