unity射线检测碰撞

前言:

使用普通的碰撞体检测,检测时不连续的,是每隔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;  //可以得到该物体上的所有信息了;
	  }

猜你喜欢

转载自blog.csdn.net/xinzhilinger/article/details/108454904