繁体   English   中英

Unity-如何使对象忽略射线投射

[英]Unity - how to make object ignore ray cast

您好,对于任何为此感到困惑的人都无法回答这个问题。

我有一个游戏对象(让我们说“ Enemy ),上面有一个Sphere Collider Audio Trigger脚本。

现在,攻击系统使用“ Ray Casting来检测该层,当您用Sphere Collider指向具有Audio Trigger的敌人时, Ray casting无法识别该如何解决?

首先要感谢Ben Tristten,我从他的一门aswome课程中得到了答案。

在“ Audio Trigger脚本(或要射线投射到的游戏对象上方的脚本)上。 将以下行添加到Start()Awake()方法中:

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

希望这对任何为此感到挣扎的人有所帮助:)

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

此参数可让您指定作为位掩码 进行射线广播的图层(因此仅通过传递1 ,同时对Default和Layer 8进行转换,仅对Default层进行转换,这是您可以命名的第一层。可以通过传递257来完成:例如1<<8 + 1<<0 )。

这样,您可以根据需要将对象设置为具有不同的物理层(最多32个不同的层,其中前8个不可重命名),例如,所有音频对撞机体积都可以拥有自己的Audio层那就不包括在您的射线广播中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM