光线投射穿过物体
Raycast passes through objects
我的光线投射通过带有网格的对象 collider/box 带有图层的碰撞器。
我似乎找不到解决办法。请帮助我。
我尝试了不同的解决方案,但光线投射仍然穿过物体。就连棘手的物体背后的物体也被呼唤出来。
public float maxRayDistance = 2.0f;
public LayerMask layerMask;
public GUISkin mySkin;
public bool showGui = false;
public RaycastHit hit;
void Update()
{
Vector3 dir = gameObject.transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, dir, out hit, maxRayDistance, layerMask))
{
showGui = true;
if (Input.GetButtonDown("Use"))
{
Invoke("SendAction", 0.3f);
}
}
else
{
showGui = false;
}
}
public void SendAction()
{
GameObject target = hit.collider.gameObject;
target.BroadcastMessage("Action");
}
Layers
Object with Layer other
您需要在 Collider (UnityEditor) 中选中 IsTrigger 才能让 Raycast 作用于您的对象。
如果这不起作用,则您的项目中有一个关于 Raycast 的设置,您可能已在物理设置中将其关闭。
我的光线投射通过带有网格的对象 collider/box 带有图层的碰撞器。
我似乎找不到解决办法。请帮助我。
我尝试了不同的解决方案,但光线投射仍然穿过物体。就连棘手的物体背后的物体也被呼唤出来。
public float maxRayDistance = 2.0f;
public LayerMask layerMask;
public GUISkin mySkin;
public bool showGui = false;
public RaycastHit hit;
void Update()
{
Vector3 dir = gameObject.transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, dir, out hit, maxRayDistance, layerMask))
{
showGui = true;
if (Input.GetButtonDown("Use"))
{
Invoke("SendAction", 0.3f);
}
}
else
{
showGui = false;
}
}
public void SendAction()
{
GameObject target = hit.collider.gameObject;
target.BroadcastMessage("Action");
}
Layers
Object with Layer other
您需要在 Collider (UnityEditor) 中选中 IsTrigger 才能让 Raycast 作用于您的对象。 如果这不起作用,则您的项目中有一个关于 Raycast 的设置,您可能已在物理设置中将其关闭。