C# Unity Raycast忽略LayerMask
出于某种原因,我的光线投射会命中位于另一层中的对象C# Unity Raycast忽略LayerMask,c#,unity3d,layer,C#,Unity3d,Layer,出于某种原因,我的光线投射会命中位于另一层中的对象 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,
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;
}
private int obstaclelslayermask=(1此外,为了补充上述答案,我还发现了一些据我所知不起作用的东西
您似乎正在将obstaclesLayerMask
放在Physics.Raycast的distance参数中
以下是所有参数:
原点:光线在世界坐标中的起点
方向:光线的方向
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))
谢谢,这解决了问题,我感到困惑,因为在Linecast中,您不必在掩码之前放置距离参数,但在这里您可以。很好,我在这里回答的第一个问题哈哈,它也在unity API中,位于: