Unity - как заставить объект игнорировать приведение лучей - PullRequest
0 голосов
/ 11 июня 2018

Здравствуйте, я отвечу на этот вопрос всем, кто с этим боролся.

У меня есть игровой объект (скажем, Enemy), и на нем есть скрипт Audio Trigger с Sphere Collider.

Теперь система атаки использует Ray Casting, чтобы обнаружить слой, как всегда, когда вы указываете на врага, у которого Audio Trigger, а Sphere Collider Ray casting не распознает его, как вырешить это?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

В дополнение к ответу Rony_y следует отметить, что метод Physics.Raycast() (как и другие аналогичные методы, такие как RaycastAll, SphereCast и т. Д.) Принимает параметр LayerMask водна из его перегрузок.

Этот параметр позволяет указать , на какие слои вы хотите выполнить лучевую трансляцию как битовую маску (поэтому приведение только к слою по умолчанию будет выполнятьсяпрохождение 1, при наведении на Default и Layer 8 - первый слой, который вы можете назвать - будет выполнено путем передачи 257: например, 1<<8 + 1<<0).

Таким образом, выВы можете настроить свои объекты так, чтобы они имели разные физические слои по мере необходимости (до 32 различных слоев, первые 8 из которых не пригодны для изменения), например, все ваши громкости аудио коллайдера могут иметь свой собственный слой Audio, который вы можете затем простоне включать в ваши радиопередачи.

0 голосов
/ 11 июня 2018

Во-первых, благодаря Бену Тристтену я взял ответ на одном из его новых курсов.

На вашем Audio Trigger сценарии (или сценарии, который находится над игровым объектом, который вы хотите проследить)в ролях).добавьте следующую строку в метод Start() или Awake():

gameObject.layer = LayerMask.NameToLayer ("Ignore Raycast");

Надеюсь, это поможет всем, кто борется с этим:)

...