1、射线检测
目前物体相交的判断:
- 碰撞检测必备条件:刚体,碰撞器
- 范围检测必备条件:碰撞器
如果想要鼠标选择场景上的一物体,或者FPS游戏中无弹道,不产生实际的子弹对象进行移动的情况下,需要判断一条线和物体的碰撞情况,即通过射线检测,可以在指定点发射一个指定方向的射线,判断该射线与哪些碰撞器相交,得到相应对象
2、射线对象
(1)3D世界中的射线
假设有一条起点为坐标(1,0,0),方向为世界坐标z轴正向的射线。
// 参数一:起点
// 参数二:方向向量
Ray r = new Ray(Vector3.right, Vector3.forward);
// Ray中的参数
print(r.origin); // 起点
print(r.direction); // 方向
(2)摄像机发出的射线
得到一条从屏幕位置作为起点,摄像机视口方向的射线
Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);
注意:单独的射线没有实际的意义,需要结合物理系统进行射线碰撞判断
3、碰撞射线检测
Physics类中提供了很多进行射线检测的静态函数,有很多重载类型,只需要掌握几个核心常用的函数即可
注意:射线检测和范围检测一样也是瞬时的
(1)最原始的射线检测
// 准备一条射线
Ray r = new Ray(Vector3.zero, Vector3.forward);
// 进行射线检测,如果碰到对象,返