Вопрос

У меня есть проблема с моей функцией OncollisionEnter в Unity3D. Дело в том, что у меня есть контроллер третьего человека, который, если столкнуться с буджевым объектом, должен активировать другой GameObject и этикетку.

Вот как я дал свой код

function OnCollisionEnter(collision : Collision)
{
   if(collision.gameobject1.tag=="tag1")
   {
     // activate game object and label
   }
   if(collision.gameobject2.tag=="tag2")
   {
      // deactivate game object and label
   }
}

Проблема в том, что в том, что я входит в петли, и я не знаю, неправильно ли то, что я дал, или то, как я дал. Где я ошибаюсь?

Это было полезно?

Решение

Если событие OncollisionEnter запускается (вы можете добавить печать, чтобы убедиться), то есть две вещи, которые нужно проверить: теги и коллайдеры

Теги

Пытаться

collision.transform.tag

Также убедитесь, что вы выбрали правильный тег для GameObject.

Коллайдеры

В Unity3d обратные вызовы столкновения (OncollisionEnter и т. Д.) Происходят только при определенных обстоятельствах. Пример: GameObject (GameObject1) с компонентом коллайдера и жесткого тела будет столкнуться со статическим (не движущимся) GameObject (GameObject2), который просто имеет коллайдер.

Я бы посмотрел на Ссылка на Box Collider потому что внизу Матрица действия столкновения Это объясняет в каких условиях столкновения происходят.

Другие советы

Пожалуйста, добавьте теги в Unity. Возможно, вы не добавляете теги в объекты. Пожалуйста, добавьте tag1 а также tag2 В свои теги выберите свои объекты и выберите tag1 или же tag2.

enter image description here

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top