ここでは衝突時に呼ばれる特殊な関数について説明します。これを使うと、ゲームオブジェクト同士が衝突したときの処理を簡単に作ることができます。
※この記事で使用しているUnityのバージョン:Unity2019.1
OnCollision○○関数
コライダーを持つゲームオブジェクト同士が衝突したときに呼ばれます。関数は次の3つがあります。
- OnCollisionEnter
- OnCollisionStay
- OnCollisionExit
OnCollisionEnter
ゲームオブジェクト同士が衝突した瞬間に1回だけ呼ばれます。
OnCollisionStay
ゲームオブジェクト同士が衝突(接触)している間呼ばれ続けます。
OnCollisionExit
ゲームオブジェクト同士が離れた瞬間に1回だけ呼ばれます。
OnTrigger○○関数
コライダーの「Is Trigger」がONになっているときに呼ばれます。これを使うと、「ある範囲に入ったかどうか」などの処理を行うことができます。関数は次の3つがあります。
- OnTriggerEnter
- OnTriggerStay
- 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」という変数に入るので、あとはそれを使って名前を取得しています。
このように衝突検知メソッドを使えば衝突時の処理をとても簡単に書くことができます。