2017-01-22 5 views
0

Я использую функцию OnTriggerStay2D(), которая что-то делает, когда объект внутри коллайдера (не имеет значения, что). Однако иногда у меня есть другой, так что в общей сложности есть 2 коллайдера, которые могут оставаться внутри этого коллайдера. Два коллайдера не на одном Game Object. Пытаюсь так:Unity - OnTriggerStay2D() для двух коллайдеров одновременно

void OnTriggerStay2D(Collider2D other) 
{ 
    if (other.gameObject.CompareTag("Obj1")) 
    { 
     //do something 
    } 
    if (other.gameObject.CompareTag("Obj2")) 
    { 
     //do something else 
    } 
} 

но сделать что-то еще просто никогда не происходит, когда Obj1 уже внутри. Как сделать коллайдер сразу двумя коллайдерами за OnTriggerStay2D()?

EDIT ПРОЯСНИТЬ:

OnTriggerStay2D() еще не вызывается. Проблема в том, что код никогда не попадает в оператор if, где я должен делать что-то еще комментарий.

+0

Вы говорите, что 'OnTriggerStay2D' никогда не вызывается снова, если объект уже сталкивается? Если это неверно, отредактируйте свой вопрос и объясните его больше. – Programmer

+0

Нет, я сказал точно, что _do чего-то другого не происходит. Это означает, что код никогда не «попадает» в это '' 'заявление. – agiro

+0

@ Редактор программы, извините, что запутался. – agiro

ответ

1

Когда вызывается функция OnTriggerStay2D, она не сообщает о нескольких касательных объектах GameObjects. Он возвращает только одну информацию о триггере/Collider2D. После следующего физического кадра или так, он будет вызываться снова. На этот раз он вернет другую информацию триггера/Collider2D, касающуюся одного и того же GameObject.

В вашем случае, после того, как Obj1 возвращается, OnTriggerStay2D будет называться в следующем кадре физики или так с obj2 вернулся.