出于某些原因,我的射线投射击中了在另一个图层上的物体。
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 << 30,并尝试使用 LayerMask.GetMask()
,但raycast仍然会命中物体。只有将layerMask
设置为默认层,如 1 << 0,才能使raycast忽略碰撞。