指定点发射一条射线,判断射线与哪些碰撞器相交,得到相交的对象
注意:检测对象需要有碰撞器
- Ray 射线
参数一:射线的起点
参数二:射线的方向
Ray ray=new Ray(起点,方向); - 摄像机发射射线
屏幕位置为起点,摄像机视口方向作为射线方向
Ray r=Camera.main.ScreenPointToRay(屏幕上的点);
例如:
Ray r2=Camera.main.ScreenPointToRay(Input.mousePosition); - 射线检测函数
射线检测是瞬时的,执行代码进行一次射线检测 - Physics.Raycase(射线,检测距离,检测层级,全局设置/使用触发器/忽略触发器)
返回bool 真:检测到 假:没有检测到 - 获取一个检测对象信息
RaycastHit :检测对象的信息
RaycastHit hit;
Physics.Raycast(射线,out hit,检测距离,层级,全局设置/使用触发器/忽略触发器); - 获取多个检测对象信息
RaycastHit[] hits=Physics.RaycastAll(射线,检测距离,检测层级,全局设置/使用触发器/忽略触发器); - 获取检测对象的数量
Physics.RaycastNonAlloc(射线,RaycastHit数组,检测距离,层级,全局设置/使用触发器/忽略触发器);
返回int 检测到的对象数量 - RaycastHit
hit.collider 获取检测对象的碰撞器
hit.point 射线与碰撞器相交的点
hit.normal 相交点在碰撞器上的法线
hit.transform 检测对象的位置信息
hit.distance 检测到的对象与自己的距离 - 注意:距离参数后面是层级参数,两者都是int类型的参数