LoginSignup
1
0

一つのゲームオブジェクトで複数トリガーの通知を分別したい

Last updated at Posted at 2024-03-16

「MonoBehaviourのOnTriggerEnterだと二つのどちらのトリガーから通知されているのか分別することが基本的にできないよね?」

「UniRxの(collider).OnTriggerEnterAsObservable()で別々に監視できなかったっけ?」

という会話があったので検証メモ。

検証

image.png

できないらしい...

ソースを読む感じ、コライダーがついてるコンポーネントのOnTriggerEnterを監視しているみたい。

image.png

2*2の計4回通知が呼ばれちゃってる。

TriggerTest
    [SerializeField] private Collider _collider1;
    [SerializeField] private Collider _collider2;

    private void Awake()
    {
        _collider1.OnTriggerEnterAsObservable().Subscribe(_ => Debug.Log("collider1にぶつかった"));
        _collider2.OnTriggerEnterAsObservable().Subscribe(_ => Debug.Log("collider2にぶつかった"));
    }

    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("なにかにぶつかってる");
    }

対処法

image.png

それぞれトリガーをのゲームオブジェクトを子に持てばok
(コードは同じ)

UnityのOnTriggerEnterは子オブジェクトのトリガーにも反応しちゃうのね..

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0