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。