出于某种原因,我的光线转换击中了另一层中的对象。private int obstaclesLayerMask = (1 << 11) | (1 << 12);private Vector3 GetPointOfContactNormal(){ Ray ray = new Ray(transform.position, transform.forward); if (Physics.Raycast(ray.origin, ray.direction, out hit, obstaclesLayerMask)) { Debug.Log(hit.collider.gameObject.name); return hit.normal; } return Vector3.zero;}我尝试将 layerMask 更改为随机图层,即使是未指定的图层,例如 1 最佳答案 另外,要添加到上述答案中,我发现其他一些根据我的知识不起作用的东西。似乎您将 obstaclesLayerMask 放在 Physics.Raycast 的距离参数中这些是所有参数: 原点:世界坐标系中射线的起点。 方向:射线的方向。 maxDistance:射线应该检查碰撞的最大距离。 layerMask:一个图层蒙版,用于在转换光线时选择性地忽略碰撞体。 queryTriggerInteraction:指定此查询是否应命中触发器。 如果您将其更改为以下参数范围,则该参数范围将是正确的://I put it on 300f here but just put there what you prefer.if (Physics.Raycast(ray.origin, ray.direction, out hit, 300f, obstaclesLayerMask))关于c# - unity Raycast 忽略 LayerMask,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58135605/
10-13 07:08