Render.ru

Проблема с onTriggerEnter

Рейтинг
57
#1
Здравствуйте. Просматриваю курс по юнити и застрял на одном моменте. Есть персонаж и триггер, который должен срабатывать при пересечении его персонажем.
Код:
void onTriggerEnter (Collider other)
        {
                if (other.tag == "Player")
                {
                collider.isTrigger = true;
                }
   
        }
на персонаже стоит тег Player, но при пересечении им триггера, не выполняется условие. тестировал с простым кубиком, котороый просто падает на триггер и имеет такой же тег, тоже не работает. подскажите пожалуйста в чем может быть проблема.
 

BeLiar

Знаток
Рейтинг
24
#2
Во-первых: эта строчка "collider.isTrigger = true;" соответствует галочке в эдиторе. Если она на момент запуска не будет установлена, то события этого триггера никогда и не будут вызваны.

Во-вторых: Когда галочка установлена изначально, компонент-коллайдер становиться "зоной реакции". Чтоб с ней взаимодействовать нужен объект с компонентами коллайдера и ригидБоди(!!!). Скрипт с реакцией триггера должен быть на том же объекте, что и коллайдер-триггер.
Так же в настройках физики проекта, в матрице столкновений, между слоями этих объектов должны быть включены столкновения.

Вообще на сайте юнити есть обучающий видеоурок, как раз на тему триггеров, советую посмореть.
 
Рейтинг
57
#3
Извиняюсь, что подробно не описал все настройки. На прикреплённом изображении видно как всё настроено. По сути делал всё как в видеоуроке, не могу найти почему не работает.
 

Вложения

BeLiar

Знаток
Рейтинг
24
#4
Дебаг.лог расставить и посмотреть, срабатывает ли вообще событие и остальные его этапы.
В режиме игры поставить на паузу и убедиться, что коллайдеры пересекаются.

А вообще надо проект смотреть и ковырять. Это случаем не Indie Game Development Pipeline?
 
Рейтинг
57
#5
Дебаг.лог расставить и посмотреть, срабатывает ли вообще событие и остальные его этапы.
В режиме игры поставить на паузу и убедиться, что коллайдеры пересекаются.

А вообще надо проект смотреть и ковырять. Это случаем не Indie Game Development Pipeline?
Да, это он. Дебагом пользоваться пока не умею, пробовал перенести туда другое событие из void update, которое точно работает, в триггере оно тоже не срабатывает. уже всё перепробовал, перерыл гугл, не могу найти в чём проблема.
 

BeLiar

Знаток
Рейтинг
24
#6
да тут гугл не поможет. Можно попробовать задать вопрос на сайте юнити, но я бы советовал просто разобраться самому:
Сделать простую сцену, сымитировать столкновение по триггеру. Убедиться, что работает.
Потом заменить на свои объекты по одному в этой сцену. Убедиться, что работает.
Потом сравнить параметры с нужной сценой или заново создать объекты в нужной сцене с нуля.

Кстати там в коде уже onTriggerEXIT, а не Enter.
 
Рейтинг
57
#7
Да всё уже перепробовал, я в тупике просто. Да, там onTriggerEXIT, я экспериментировал с энтер и по ошибке вставил в название темы.
 

Cibergod

Активный участник
Рейтинг
8
#8
Здравствуйте. Просматриваю курс по юнити и застрял на одном моменте. Есть персонаж и триггер, который должен срабатывать при пересечении его персонажем.
Код:
void onTriggerEnter (Collider other)
        {
                if (other.tag == "Player")
                {
                collider.isTrigger = true;
                }
  
        }
на персонаже стоит тег Player, но при пересечении им триггера, не выполняется условие. тестировал с простым кубиком, котороый просто падает на триггер и имеет такой же тег, тоже не работает. подскажите пожалуйста в чем может быть проблема.
Чтобы триггер срабатывал он должен пересекаться жестким телом и у триггера не должна стоять галка
 
Сверху