Наша цель — прояснить разницу между OnCollisionEnter и OnTriggerEnter.

Давайте визуализируем это для легкого понимания!

белый куб — ​​это игрок.

синий куб имеет Rigidbody.

У красного куба есть только Box Collider.

Скрипт с этими строками кода прикреплен к кубу Player:

Если мы запустим приложение и переместим куб игрока, мы получим сообщения, записанные в консоль.

Почему это так?
Игровые объекты с Rigidbody сталкиваются друг с другом. Поэтому будет вызываться OnCollissionEnter(). Однако обоим игровым объектам потребуется компонент Rigidbody.

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