前言:
使用普通的碰撞体检测,检测时不连续的,是每隔0.02秒进行的离散检测,这样在被检测的物体速度比较快时,就会由直接穿过物体的可能,这个时候,就需要使用射线检测了。
为了实现高速状态下的碰撞检测,要使用连续的射线来完成这样一个功能。
一,创建射线
使用 new Ray创建射线new Ray(发射位置,发射方向乘上发射速度)
Ray ray = new Ray(transform.position, transform.forward * 100);
二,碰撞检测
使用Physics.Raycast(射线,out 被碰撞物体,最大检测距离)(返回bool类型)射线检测碰撞,并会返会被碰撞物体的信息
RaycastHit hitInfo; //定义一个RaycastHit变量用来保存被撞物体的信息;
if (Physics.Raycast(ray, out hitInfo, 100)) //如果碰撞到了物体,hitInfo里面就包含该物体的相关信息;
{
hitInfo.point; // 碰撞点的位置;
hitInfo.normal; //与碰撞点所在平面垂直的向量;
hitInfo.collider.gameobject; //可以得到该物体上的所有信息了;
}