顶点显示正确时形状网格不正确

时间:2020-08-29 09:25:06

标签: unity3d

我正在尝试创建一个代表自上而下游戏中玩家视野的多边形。为此,我按照此处的教程进行操作,并亲自编写了代码以使其在Unity中正常工作。

https://ncase.me/sight-and-light/

首先,我从Obstacles的网格中获取所有顶点。然后,我将它们转换为世界位置,并向每个点投射光线。我还向左投射了一条额外的光线,向右投射了一条额外的光线,以击中可能位于障碍物后面的任何墙壁。

然后我按照旋转角度和与玩家的距离对找到的交点进行排序。

intersections.Sort((i1, i2) =>
{
    var position = transform.position;

    Vector3 targetDir1 = i1 - position;
    Vector3 targetDir2 = i2 - position;

    float angle1 = Vector3.SignedAngle(targetDir1, targetDir2, Vector3.up);

    if (angle1 > 0)
    {
        return -1;
    }

    if (angle1 < 0)
    {
        return 1;
    }

    return targetDir2.sqrMagnitude.CompareTo(targetDir1.sqrMagnitude);
});

这是绘制的视线多边形线的图像。白线是射线投射,绿线是创建的相交顶点。

Intersection Vertices Connected

如果我使用Poly2Mesh绘制多边形,有时我会正确绘制它,而有时它会变形。

正确

Mesh Correct

变形

Mesh Incorrect

对此感到奇怪的是,顶点显示正确,因为您可以看到以绿色绘制的基础多边形看起来很好。我唯一能想到的是,它是由于相交的排序错误而导致尝试创建凹形。

可能是什么原因造成的?

0 个答案:

没有答案