Метод OnCollisionEnter() используется для объектов, которые вам необходимо физически взаимодействовать с другими коллайдерами, что означает, что они не будут проходить сквозь них, а будут сталкиваться и блокировать пути друг друга.

Примером этого является автомобильная игра, когда две машины сталкиваются друг с другом, они должны физически реагировать друг на друга. К обеим машинам необходимо приложить одинаковую силу, необходимо воспроизвести звуковой эффект столкновения, и они могут визуально показать следы и вмятины от места удара. Все это должно происходить OnCollisionEnter(), чтобы они могли физически столкнуться и заблокировать друг друга. В противном случае они прошли бы насквозь друг друга, и ни один из других компонентов столкновения не имел бы смысла.

Когда использовать OnTriggerEnter

Метод OnTriggerEnter() используется для объектов, которые вы не хотите физически взаимодействовать с другими объектами при столкновении.

Примером этого является пуля в шутере, когда пуля сталкивается с врагом, я не хочу, чтобы она сразу же отскакивала или потенциально блокировала движение другого объекта, мне нужно, чтобы она вызывала урон или любые эффекты попадания, а затем либо удалить себя, либо иметь возможность пройти сквозь врага, чтобы потенциально поразить другого позади него. Так что это должно быть OnTriggerEnter(), чтобы эта пуля могла делать все, что ей нужно, без физического воздействия того, что с ней сталкивается. В противном случае он может быть заблокирован, ударен, отскочил и больше не будет двигаться в том направлении, в котором игрок выстрелил в него.