Я незнаком с Fungus, однако, как уже упоминалось в комментариях, у вас возникли проблемы с вызовом события при столкновении.
Пожалуйста, примите во внимание следующее:
Для вызова OnTriggerXXX
коллайдеры должны быть помечены IsTrigger
, однако триггерные коллайдеры являются нефизическими, это означает, что если в вашем игровом объекте есть только 1 триггерный коллайдер, другие физические объекты могут проходить через него. их. Чтобы это исправить, вы можете либо добавить второй коллайдер, отметив IsTrigger
, либо ИЛИ, вы можете снять отметку IsTrigger
и использовать вместо него OnCollisionXXX
. Я бы предложил последнее решение.
Убедитесь, что ваши коллайдеры действительно могут столкнуться.
- Go для "Правка> Настройки проекта> Физика ", прокрутите вниз, пока не увидите" Матрица столкновений слоев "и убедитесь, что флажок на пересечении слоев ваших объектов установлен.
- Убедитесь, что два коллайдера могут фактически сталкиваться во время игры. Это характерно для столкновений персонажей. У ваших персонажей может быть простой физический коллайдер в виде коробки или цилиндра, но у вас есть внутренний коллайдер me sh, который будет триггером на вашем NP C. Таким образом, ваш персонаж игрока никогда не сможет столкнуться с триггером внутри физического коллайдера.
Это может звучать глупо, но убедитесь, что вы добавили свой скрипт для исправления объекта. Я потерял счет того, сколько раз я переживал ненужное разочарование после написания сценария и забывания добавить его в тестовый объект.
Этого должно быть достаточно для обеспечения ваших событий на самом деле называются. Теперь обратите внимание, что, как отмечает Hermesis, вы пытаетесь прочитать ввод в событии с 1 кадром. Вы также используете Input.GetKeyDown()
, который также является проверкой 1 кадра, то есть он вернет true в кадре только после изменения состояния ключа.
В вашем коде условие (enter && Input.GetKeyDown(KeyCode.E))
будет иметь значение «истина», только если пользователь нажмет клавишу в том же кадре, где начинается столкновение.
Опять же, как отмечает Hermesis, рассмотрите возможность использования «OnXXXStay» вместо «OnXXXEnter».
Вот несколько советов:
- Используйте
OnXXXEnter
, чтобы отобразить сообщение для игрока, чтобы он знал, что он находится в контакте с интерактивным, а также знает, какие клавиши могут делать что. - Используйте
OnXXXStay
, чтобы реагировать на нажатия клавиш только во время столкновения. - Используйте
OnXXXExit
, чтобы удалить сообщение, которое было установлено при столкновении.
Надеюсь, это поможет.