OnTriggerStay2D не всегда работает

Как говорит сама Unity:

OnTriggerStay2D вызывается каждый кадр для всех Collider2D.

Я столкнулся с проблемой, что когда я стою в этой области, у меня начинает срабатывать Debug.Log 53 раза и останавливается, если я сдвинусь(но всё же буду стоять в области), он снова заработает и отключиться, не могу понять в чем проблема?

private void OnTriggerStay2D(Collider2D collision)
{
    Debug.Log("Stay");
}

Видео


Ответы (3 шт):

Автор решения: Bender

Всё из-за того что Unity оптимизирует, и бросает Rigidbody2D в sleeping mode.

→ Ссылка
Автор решения: Максим Фисман

Дам свой ответ, так как считаю, ответ автора вопроса не соответствует рекомендациям о том, как написать хороший ответ


Если Rigidbody двигается медленнее определенной скорости, считается, что он остановился. После этого он будет переведен в "спящий режим" и будет оставаться таковым, пока к объекту не будет приложена сила или не произойдет столкновения. Это сделано для оптимизации: чтобы не тратить ресурсы на работу с неподвижным, "спящим" объектом.

В некоторых случаях, когда объект с Collider'ом, но без Rigidbody был передвинут через изменение Transform'а (т.н. телепортация), объект может не "проснуться" сам. Для его принудительного "разбуждения" существует функция Rigidbody.WakeUp()


Информация является переводом страницы официальной документации

→ Ссылка
Автор решения: Nick Shakhrai

В инспекторе у Rigidbody2D, пункт Sleeping Mode выставить на Never Sleep

→ Ссылка