ПРОБЛЕМА: нет столкновения между объектами с триггером
. Чтобы понять, как работает столкновение, вам необходимо сначала определить, какие объекты сталкиваются, потому что очень немногие объекты могут вызвать OnCollisionEnter .
Из вашего описания мы можем выделить 2 типа объектов.
Объект A : триггерный кинематический триггер тела
Объект B :Статический триггерный коллайдер
Если вы проверите Матрица столкновений , не может быть столкновения с чем-либо, имеющим триггер (как Объект A, так и Объект B), поэтому OnCollisionEnter не будет срабатывать.
Я повторяю: триггер не сталкивается ни с чем, независимо от того, что является другим объектом.
РЕШЕНИЕ: используйте OnTriggerEnter вместо OnCollisionEnter
Если вы хотите получить событие изПри столкновении с триггерными объектами (или 2 из них, как в вашем случае) вы можете использовать OnTriggerEnter .
Считать, что в этом случае параметр thМетод будет Collider other
, то есть Коллайдер вместо Столкновение , но в вашем случае я думаю, что вам вообще не понадобится столкновение.
private void OnTriggerEnter(Collider other)
=> Debug.Log("entered");
ВЗГЛЯДЫ о столкновениях Unity
Столкновения зависят от объектов установки твердого тела и коллайдера.Я могу показать несколько примеров, основанных на вашей ситуации.
Первый элемент, который следует учитывать, - это то, что Статический коллайдер - это не обычный объект, установленный как статический (это было источником путаницы в комментариях ниже).
Из Руководство по Unity
STATIC COLLIDER
Это GameObject, у которого есть коллайдер, но нет твердого тела.Статические коллайдеры используются для геометрии уровня, которая всегда остается на одном месте и никогда не перемещается.Поступающие объекты из твердого тела будут сталкиваться со статическим коллайдером, но не будут его перемещать.
Учтите также, что вы хотите использовать триггер (который превращает ваш STATIC COLLDER в STATIC TRIGGER COLLIDER).
Основная идея триггера такова: «Используйте триггеры, когда вы хотите поймать событие, но не хотите, чтобы игровой объект взаимодействовал с физическими силами».
Триггеры
Система сценариев может обнаруживать коллизии и инициировать действия с помощью функции OnCollisionEnter.Тем не менее, вы также можете использовать физический движок просто для обнаружения, когда один коллайдер входит в пространство другого, не создавая столкновения . Коллайдер, настроенный как триггер (с использованием свойства Is Trigger), не ведет себя как сплошной объект и просто пропускает другие коллайдеры через .Когда коллайдер входит в свое пространство, триггер вызовет функцию OnTriggerEnter для сценариев объекта триггера