Одна из возможных причин, по которой объекты в Unity могут переставать реагировать на OnCollisionEnter при замедлении движения, — слишком высокая скорость объектов, участвующих в столкновении. 1 В таком случае события столкновения могут не обнаруживаться. 1
Несколько других возможных причин, по которым не срабатывает OnCollisionEnter:
- К объекту не прикреплён Rigidbody. 1 Если к объекту не прикреплён компонент Rigidbody, то события столкновения не будут обнаружены. 1
- К объекту не прикреплён Collider. 1 Если к объекту не прикреплён компонент Collider, то он не сможет обнаруживать столкновения. 1
- Неверно настроен режим обнаружения столкновения. 1 Например, если в компоненте Rigidbody установлен режим «Continuous Dynamic», то события столкновения могут не обнаруживаться. 1
- Неправильная подпись метода OnCollisionEnter. 1 Нужно убедиться, что метод имеет правильную сигнатуру. 1
- К Collider установлен атрибут «Is Trigger». 4 В таком случае вместо обратных вызовов OnCollision…() будут срабатывать обратные вызовы OnTrigger…(). 4
Если проблема не решается, можно попробовать добавить к другому игровому объекту новое Rigidbody и Collider и посмотреть, работает ли это. 4