首页 > 解决方案 > Raycast 穿过物体

问题描述

我的光线投射通过带有网格对撞机/盒式对撞机和图层的对象。

我似乎找不到解决方案。请帮我。

我尝试了不同的解决方案,但光线投射仍然穿过物体。即使是难以处理的物体后面的物体也被召唤出来。

 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");
 }

图层

带有其他图层的对象

标签: unity3draycasting

解决方案


您需要检查 Collider (UnityEditor) 中的 IsTrigger 以使 Raycast 对您的对象起作用。如果这不起作用,您的项目中有一个关于 Raycast 的设置,您可能在物理设置中关闭了该设置。


推荐阅读