射线:从一个点往一个方向,发射一根无限长的射线,这根射线会与场景中带有 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:颜色。