いんでぃーづ

ゲームいろいろ、いろいろ自由

Unity : 衝突検出したら他のスクリプトに通知する汎用コンポーネント

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);
    }

}

インスペクタでイベントを通知したいオブジェクトを設定

インスペクタから通知先を設定できる


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。