OnTriggerStay2D не всегда работает
Как говорит сама Unity:
OnTriggerStay2D вызывается каждый кадр для всех Collider2D.
Я столкнулся с проблемой, что когда я стою в этой области, у меня начинает срабатывать Debug.Log 53 раза и останавливается, если я сдвинусь(но всё же буду стоять в области), он снова заработает и отключиться, не могу понять в чем проблема?
private void OnTriggerStay2D(Collider2D collision)
{
Debug.Log("Stay");
}
Ответы (3 шт):
Всё из-за того что Unity оптимизирует, и бросает Rigidbody2D в sleeping mode.
Дам свой ответ, так как считаю, ответ автора вопроса не соответствует рекомендациям о том, как написать хороший ответ
Если Rigidbody двигается медленнее определенной скорости, считается, что он остановился. После этого он будет переведен в "спящий режим" и будет оставаться таковым, пока к объекту не будет приложена сила или не произойдет столкновения. Это сделано для оптимизации: чтобы не тратить ресурсы на работу с неподвижным, "спящим" объектом.
В некоторых случаях, когда объект с Collider'ом, но без Rigidbody был передвинут через изменение Transform'а (т.н. телепортация), объект может не "проснуться" сам. Для его принудительного "разбуждения" существует функция Rigidbody.WakeUp()
Информация является переводом страницы официальной документации
В инспекторе у Rigidbody2D, пункт Sleeping Mode выставить на Never Sleep