光线投射点不在平面图层(奇怪位置)上



目标:获取光线投射与平面图层的交点。

光线投射绘制一条与平面相交的线(单击鼠标时(。

但是这条线也与路径中的所有东西相交,因此结果点是给出与平面以外的物体的交点。

我将平面层指定为"平面",并且仅在光线投射时将平面层包含在代码中。

        if (Input.GetMouseButton(0))
        {
            RaycastHit hit;
            int layerMask = (1 << 8); // Plane's Layer
            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast (ray, out hit, layerMask)) {
                transform.position = hit.point;
            }
        }

正在发生的事情是,游戏对象的位置将覆盖其旧位置,直到对象与摄像机一起裁剪。

所以,你正在将一个射线、一个 RayCastHit 和一个数字传递到 Physics.Raycast 中,它会像这样识别它们:

Physics.Raycast (ray, hit, distance)

每次使用图层蒙版进行光线投射时,都需要先设置投射的距离,因为这是所有光线投射方法都期望作为命中后要使用的第一个数字。这是一个应该使用 Mathf.Infinity 作为距离的版本:

if (Input.GetMouseButton(0)) {
    RaycastHit hit;
    int layerMask = (1 << 8); // Plane's Layer
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    if (Physics.Raycast (ray, out hit, Mathf.Infinity, layerMask)) {
        transform.position = hit.point;
    } 
}

最新更新