Причина, по которой Debug.Log("Collision detected");
не попадает, наиболее вероятна, потому что вы используете (или более) коллайдер, у которого отмечена опция Is Trigger
.
Это превратит коллайдер в триггер.Что заставит его игнорировать фактическое столкновение, и вместо этого только проверяет, вошел ли коллайдер в пространство другого коллайдера.
Согласно Документам Unity на триггерах:
Коллайдер, настроенный как триггер (с использованием свойства Is Trigger), не ведет себя как сплошной объект и просто пропускает другие коллайдеры.Когда коллайдер входит в свое пространство, триггер вызовет функцию OnTriggerEnter для сценариев объекта триггера.
Это, в свою очередь, означает, что если либо коллайдера является триггером, а не private void OnCollisionEnter(Collision collision)
не будет вызываться, так как столкновения нет.
Вместо этого вызывается OnTriggerEnter(Collider collider)
.
Причина, по которой Collision detected
печатается при падении куба, заключается в том, что и ваш куб, и земля - это не триггеры, а сплошные коллайдеры.Скорее всего, это означает, что ваши руки настроены на триггеры.
Если вы используете
private void OnTriggerEnter(Collider collider)
{
Debug.Log("Trigger detected");
}
Вместо этого он должен регистрировать Trigger detected
в консоли при прикосновении к объекту.Внутри этого метода вы также сможете манипулировать объектом, которого вы касаетесь, используя collider.gameObject