MonoBehaviour による衝突検出をおこなうにはCollider をつけたオブジェクトに直接スクリプトをアタッチする必要があるので、検出したあと他のスクリプトで処理を行いたい場合は一工夫おこなう必要がある。
イベントごとにそれぞれ別な処理を都度作るのはめんどいので、検出したコライダーを別GameObjectに通知する汎用スクリプトを書いた。
スクリプト本体
以下のスクリプトを作成し、コライダーがついてるオブジェクトにつける
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; [System.Serializable] public class ColliderEvent : UnityEvent<Collider> { } public class CollisionEventDispacher : MonoBehaviour { public ColliderEvent _OnColliderEvent; private void OnTriggerEnter(Collider other) { _OnColliderEvent.Invoke(other); } private void OnCollisionEnter(Collision collision) { _OnColliderEvent.Invoke(collision.collider); } }
インスペクタでイベントを通知したいオブジェクトを設定
インスペクタから通知先を設定できる