Unity3D之物理射线

射线:从一个点往一个方向,发射一根无限长的射线,这根射线会与场景中带有 Collider 组件的物体发生碰撞。

射线的使用:

 1 public class Test
 2 {
 3     private void Start()
 4     {
 5         if (Input.GetMouseButtonDown(0))
 6         {
 7             //从主摄像机发射一条射线至鼠标点击的位置。
 8             Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
 9             //从自己的位置,向世界坐标轴的 forward 方向发射一条射线。
10             Ray ray2 = new Ray(this.transform.position, Vector3.forward);
11             //声明一个 RaycastHit 类型的变量,存储射线的碰撞信息。
12             RaycastHit hitInfo;
13             //检查射线是否碰撞到物体
14             if (Physics.Raycast(ray1,out hitInfo))
15             {
16                 //执行代码
17             }
18         }
19     }
20 }

根据上面的代码:

hitInfo.point:表示碰撞点的坐标。

Physics.Raycast():使用这个方法检测射线时,因为该方法重载很多,一定要弄清楚自己使用的是哪个重载方法,填对参数,不然很容易出错。

因为射线是看不见的,我们可以通过画线的方式来模拟射线,方便我们调试,方法如下:

Debug.DrawRay(Vector3 pos,Vector3 dir,Color c):画线。

pos:起点坐标。

dir:方向。

c:颜色。

原文地址:https://www.cnblogs.com/xiaoyulong/p/7932003.html