【Unity3D】射线碰撞检测

射线碰撞检测是游戏中使用频率非常高的一种碰撞检测,常见应用场景有UI交互、人物移动等。

几乎可以说,所有通过鼠标点击实现的功能都依赖于射线碰撞检测。

//声明射线ray,ScreenPointToRay方法返回一条以主摄像机为起点,以方法参数为终点的射线
Ray ray  = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Input.GetMouseButtonDown(0))
{
    //ray射线检测到碰撞,则Raycast方法返回true,同时将与射线发生碰撞的物体的属性值赋值给变量hit
    if (Physics.Raycast(ray, out RaycastHit hit))
    {
        //打印碰撞物体的坐标
        print(hit.point);
    }
}

从上述代码可以看出,实现一个简单的射线碰撞检测,关键代码只有两行。

①生成一条射线

Ray ray  = Camera.main.ScreenPointToRay(Input.mousePosition);

②检测碰撞,获取碰撞物体的信息

Physics.Raycast(ray, out RaycastHit hit)

 

posted on 2021-02-26 00:21  real-道森  阅读(154)  评论(0编辑  收藏  举报