访问圆范围内的坐标

时间:2019-03-11 12:42:09

标签: c# unity3d

我需要一种方法来绕过所有围绕给定坐标形成圆的坐标。 例如(查看图像),如果我给出灰色图块的坐标和半径9,则需要获取所有红色图块的坐标。

Circle radius 9

这有点像布雷森纳姆的循环算法,但是我真的不明白。

在我的情况下,我将使用它来消除tileset中的圆形孔。 预先感谢!

1 个答案:

答案 0 :(得分:0)

通过所有循环或递归使用for循环

针对:

public List<Tile> Circle (Tile center, float radius)
{
    List<Tile> inside = new List<Tile>();
    foreach (Tile[] tilerow in Tilemap)
        foreach (Tile tile in tilerow)
            if (Vector2.Distance(center.position, tile.position) <= radius) inside.Add(tile);
    return inside;
}

您还可以尝试使用递归(当您在圆内时从中心到所有邻居)-在小地图上它会快得多