Unity Создает столкновение сборного элемента с окружением, но не с другими объектами того же сборного элемента

#unity3d #triggers #collision-detection

#unity3d #триггеры #обнаружение столкновений

Вопрос:

Изображение ниже — это моя симуляция, и проблема, с которой я сталкиваюсь, заключается в том, что они не будут сталкиваться так, как я хочу. Мой игровой проект

Я заставил их перемещаться случайным образом, и я хочу такого поведения.

  1. Предполагается, что зеленые шары «отскакивают» от внешних серых стен, поэтому сталкиваются с ними (имитация физики)
  2. Зеленые шары НЕ должны отскакивать друг от друга, а только выполнять triggerevents (поэтому я знаю, когда они находятся друг над другом)

Как мне это сделать. Я просмотрел несколько руководств и просто не знаю, что делать. Насколько я понимаю, чтобы вызвать столкновение, на одном из объектов должно быть включено жесткое тело, а на другом — обычный коллайдер?

введите описание изображения здесь

Я должен был следовать этому обзору. Шары из одного сборного элемента, поэтому, чтобы получить для них триггер, я должен выбрать либо статический триггерный коллайдер, либо триггер жесткого тела, либо кинематический триггерный коллайдер (как видно из обзора). НО если я выберу какой-либо из них, я не смогу столкнуться со стенами? Должен ли я сам создавать столкновения со стеной?

Ответ №1:

Что вы можете сделать, так это сделать все стены статическими коллайдерами и создать скрипт для всех шаров, который проверяет, ударяются ли они о стену или о шар. и выполняйте действия таким образом.

Или

Проверьте стены на предмет столкновения с шаром и добавьте силу к отрицательному направлению, из которого они пришли, или что-то в этом роде.(вам решать, как вы хотите, чтобы шары вели себя)

например :

   OnTriggerEnter(collision other)
  
  if(other.transform.tag == Ball)
   //Run Some Code here
   // for example
   BallRb other.GetComponent<RigidBody>();
   BalRb.addForce //add the force that you want.