射线,顾名思义是发射出的一条线,他是由两点决定的,在Unity中 ,无论2D还是3D他都有着很重要的作用,他可以在2D中检测起跳高度,3DFPS中检测弹道,Moba中用右键确定位置,好了闲话不说,进入正题.在Unity中可以使用Ray ray = new Ray()的方式创建,具体如下:
Ray ray = new Ray()
ray.orgin = Vector3.zero;
ray.direction = Vector.forward
一.射线的创建
这时一条普普通通的射线就创建好了,当然还可以使用他的有参构造方法Ray ray = new Ray(Vector3.zero,Vector3.forward) 的方法创建射线.
二.发射射线
射线主要的应用就是射线的碰撞检测,要先实现这个功能,我们要运用到的就是Physics类方法下的Raycast方法.
具体的方法如下:
static bool RayCast(Ray ray,out RayCastHit hitInfo);
这个方法有多个重载,根据实际需求我们可以选择不同的重载,通过这个方法,我们可以获取到hitInfo,他是一个结构体类型,通过它我们可以获取到射线与物体碰撞的点,hitInfo.point,也可以获取到hitInfo.collider等等.射线在场景中我们是看不到的,在初学的时候,我们可以使用Debug.DrawLine()方法绘制出射线,方便我们更好的理解射线.
三.射线的应用
这里我用一个小例子来让大家体会一下射线在unity中的应用.
在场景中创建一个cube创建一个plane 利用射线的原理使立方体缓慢移动到鼠标的点击位置.
这个小练习的重点在于两个判断,鼠标是否点击,射线碰撞.以及运用到两个方法Camera.main.ScreenPointToRay()以及Physics.Raycast(),特别注意缓慢移动以及要移动到目标位置.一般这里初学者容易犯错误.