碰撞射线检测原理

碰撞射线检测原理

1 定义

射线是从 3D 世界中的一个点向一个方向发射的无限长线。在射线的轨迹上,一旦它与添加了对撞机的模型发生碰撞,它就会停止发射。射线碰撞检测是指物体发出射线。射线与物体碰撞后unity射线检测碰撞物的原理,可以得到物体的相关信息,然后对物体进行一些操作。

2 原则

步骤如下:

获取屏幕点击点的位置;从主摄像机向屏幕点击点发出一条射线;使用 RayCast 函数进行计算。 3 代码实现

Ray ray 类和 RaycastHit ray cast 碰撞信息类是最常用的两个光线工具类。

public class ExampleClass : MonoBehaviour
{
    //参数hit 为out类型,可得到碰撞检测的返回值;
    RaycastHit hit;
 
    void Update()
    {  
    	//判断是否点击了鼠标左键
		if (Input.GetMouseButtonDown(0))
		{
			//参数ray 为射线碰撞检测的光线(返回一个从相机到屏幕鼠标位置的光线)
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			if (Physics.Raycast(ray, out hit)) //如果碰撞检测到物体
			{
				Debug.Log(hit.collider.gameObject.name);//打印鼠标点击到的物体名称
			}
		}
    }
}

4个按键功能

从相机到位置的射线:public Ray ScreenPointToRay(Vector3 position);

在此射线 Physics.Raycast(有 16 个重载)中检测碰撞的函数unity射线检测碰撞物的原理,这里有一些:

返回值:bool,碰撞检测成功为13D交通工具,否则为0。