Physics.Raycast和Physics.RaycastAll对自定义图层有不同的结果

时间:2018-03-23 02:28:30

标签: unity3d

正如标题所提到的,除了明显的事实,即方法返回不同的参数,我收到bool Physics.Raycast(...)RayCastHit[] Physics.RaycastAll(...)的不同结果。 Raycast返回true,暗示光线至少击中一个目标。 RaycastAll返回0结果。有趣的是,Raycast 总是在我的短片中返回true,而RaycastAll 总是返回false。

我有一个自定义图层我正在尝试字符串 - 我将其命名为“ClusterGoal”,它位于第9层。 Ray goalRay = new Ray(rayOrigin, agent.destination);

RaycastHit[] hits = Physics.RaycastAll(goalRay, 100f, LayerMask.GetMask("ClusterGoal"), QueryTriggerInteraction.Collide);

bool hit = Physics.Raycast(goalRay, 100f, LayerMask.GetMask("ClusterGoal"), QueryTriggerInteraction.Collide);

上面的行会产生以下日志。

RaycastAll hit 0 target(s) using mask 512 at location on its way from (13.8, 0.1, 11.8) to (1.0, 0.0, 0.3) from distance 8.164141

Raycast hit a target using mask 512 at location on its way from (13.8, 0.1, 11.8) to (1.0, 0.0, 0.3) from distance 8.164141

作为一项实验,我尝试在RaycastAll上反转我的图层蒙版,发现它成功击中了除标记为群集目标的每个对象。

1 个答案:

答案 0 :(得分:0)

Raycasting从游戏对象的底部发生。在我的情况下,我试图光线投射的对象漂浮在空中,其变换将其Y轴列为0.出于某种原因,当我调用agent.destination时,y值为0而不是预期1。

我提出的两个解决方案是将我的光线目标上的对撞机移动到地面,或将游戏物体本身移动到地面。