赞
踩
射线检测是unity中非常常用的检测手段,在很多地方都用得到,比如很多FPS游戏中就是靠射线检测来判断是否击中敌人,当然也可以用来实现其他的功能。
射线检测实现起来其实并不难,我们先做一个小案例
- //定义一条射线起点是(0,0,0),方向是沿Z轴正方向
- Ray ray = new Ray(new Vector3(0,0,0), new Vector3(0, 0, 1));
- //检测射线,返回检测到的信息,检测长度为10
- if (Physics.Raycast(ray, out RaycastHit hitInfo, 10))
- {
- //绘制射线,从射线起点开始到被射线击中的点,射线颜色为绿色
- Debug.DrawRay(ray.origin,hitInfo.point,Color.green);
- //打印被击中物体的名字
- Debug.Log(hitInfo.collider.name);
- }
射线检测的前提是被击中的物体本身是可以被检测到的,如果是有碰撞器就可以被检测到,还有一些2D的精灵或者UI虽然没有碰撞器但是也是可以设置成能被检测到的。
接下来演示一下简单的模拟一下FPS中的一些检测方法:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
只需将第一行改为获取鼠标在屏幕上的位置然后发射射线即可
当然写法不止这些,包括RayCast都有很多种重载,hitInfo也可以返回很多信息比如距离等等,感兴趣的小伙伴可以自己去试试
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。