首页 > 解决方案 > Unity - 如何使对象忽略光线投射

问题描述

我有一个游戏对象(比如说Enemy),它上面有一个Audio Trigger带有Sphere Collider.

现在攻击系统用来检测图层,但是当你指向一个上面有一个但不识别它Ray Casting的敌人时。你如何解决这个问题?Audio TriggerSphere ColliderRay casting

标签: c#unity3dgame-enginegame-physicsraycasting

解决方案


除了 Rony_y 的回答之外,还应注意该Physics.Raycast()方法(以及其他类似方法,例如 RaycastAll、SphereCast 等)LayerMask在其重载之一中采用参数。

此参数可让您指定要对哪些图层进行射线投射作为位掩码(因此只能通过传递 a 来1对 Default 图层进行投射,而对 Default 和第 8 层(您可以命名的第一层)进行投射将是通过传递完成257:例如。1<<8 + 1<<0)。

通过这种方式,您可以根据需要将对象设置为具有不同的物理层(最多 32 个不同的层,其中前 8 个不可重命名),例如,您的所有音频对撞机体积都可以有自己的Audio层,然后您可以只是不包括在您的光线投射中。


推荐阅读