Unity 图层重叠并且光线投射不会忽略我想要的图层

问题描述 投票:0回答:1

所以,我有这个代码:

if(Input.GetMouseButtonDown(0)){
   ray = Camera.main.ScreenToWorldPoint(Input.mousePosition);
   hit = Physics2D.Raycast(ray, Vector2.zero, maskLayer2.value);
   if(hit.collider != null){
      TagName = hit.transform.tag;
   }
}

我有两个不同的对象及其各自的图层:图层 1 和图层 2,我希望光线投射检测图层 2 中的对象。问题是,它们的碰撞器重叠,光线投射仅检测到第 1 层的碰撞器,最终给出了错误的 TagName。 LayerMask中唯一的层是layer2,所以我不知道该怎么办。有谁知道如何解决这个问题吗?

unity-game-engine layer collider raycast
1个回答
0
投票

看起来您使用了错误的

Physics2D.Raycast

重载
public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance)

因此您的图层蒙版被用作距离,而不是图层蒙版。

在参数列表中添加图层蒙版前的距离。

Physics2D.Raycast(origin, direction, distance, layerMask)
© www.soinside.com 2019 - 2024. All rights reserved.