#unity3d #triggers #collision-detection
#unity3d #триггеры #обнаружение столкновений
Вопрос:
Изображение ниже — это моя симуляция, и проблема, с которой я сталкиваюсь, заключается в том, что они не будут сталкиваться так, как я хочу.
Я заставил их перемещаться случайным образом, и я хочу такого поведения.
- Предполагается, что зеленые шары «отскакивают» от внешних серых стен, поэтому сталкиваются с ними (имитация физики)
- Зеленые шары НЕ должны отскакивать друг от друга, а только выполнять 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.