官方示例中使用Physics.Raycast检测摄像机有没有找到Palyer,并且中间没有被墙挡住的方法:
使用:public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo);
上面使用的Physics.Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo);会将第一个碰撞到的物体通过out参数hitInfo传送出来。
如果需要检测所有碰撞到的物体,可以使用public static RaycastHit[] RaycastAll(Ray ray);
还有各种重写方法可以设定距离,方向,layermask。
关于类Ray,它的构造函数Ray(Vector3 origin, Vector3 direction);表明其他它就代表一个射线源的坐标和一个方向向量。
除了名称空间UnityEngine中含有的物理类的方法可以如上使用外,摄像机也有类似的方法,主要用来处理触屏的点击事件。
Camera.ScreenPointToRay 屏幕位置转射线
返回一条射线从摄像机通过一个屏幕点。产生的射线是在世界空间中,从相机的近裁剪面开始并穿过屏幕position(x,y)像素坐标(position.z被忽略)。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight)。
if(Input.tou