【Unity】1つのオブジェクトに複数のコライダーを持っていても、1回しかトリガーがかからないようにしたい

Unityにおいて、同じオブジェクトに複数のコライダーを追加し、それぞれにトリガーイベントを設定することは可能です。しかし、複数のコライダーが重なっている場合、そのオブジェクトが他のオブジェクトに対してトリガーイベントを発生させる回数が、コライダーの数だけ増加してしまいます。

このような場合、コライダーの数だけトリガーイベントが発生することを回避するために、以下のような方法が考えられます。

  1. オブジェクトに対して、1つのコライダーだけを使用する。
  2. 複数のコライダーが必要な場合は、1つのオブジェクトを別々の部分に分割し、それぞれの部分に対して別々のコライダーを追加する。
  3. トリガーイベントを受け取った後に、コライダーを一時的に無効化する。

3番目の方法を実装するには、以下のようなスクリプトを作成し、オブジェクトにアタッチします。

using UnityEngine;

public class DisableColliderOnTrigger : MonoBehaviour
{
    private Collider m_Collider;

    private void Start()
    {
        m_Collider = GetComponent<Collider>();
    }

    private void OnTriggerEnter(Collider other)
    {
        // トリガーイベントが発生した場合、コライダーを無効化する。
        m_Collider.enabled = false;
    }

    private void OnTriggerExit(Collider other)
    {
        // トリガーから離れた場合、コライダーを有効化する。
        m_Collider.enabled = true;
    }
}

Unity,イベント

Posted by hidepon