「MonoBehaviourのOnTriggerEnterだと二つのどちらのトリガーから通知されているのか分別することが基本的にできないよね?」
「UniRxの(collider).OnTriggerEnterAsObservable()で別々に監視できなかったっけ?」
という会話があったので検証メモ。
検証
できないらしい...
ソースを読む感じ、コライダーがついてるコンポーネントのOnTriggerEnterを監視しているみたい。
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("なにかにぶつかってる");
}
対処法
それぞれトリガーをのゲームオブジェクトを子に持てばok
(コードは同じ)
UnityのOnTriggerEnterは子オブジェクトのトリガーにも反応しちゃうのね..