我需要一种方法来绕过所有围绕给定坐标形成圆的坐标。 例如(查看图像),如果我给出灰色图块的坐标和半径9,则需要获取所有红色图块的坐标。
这有点像布雷森纳姆的循环算法,但是我真的不明白。
在我的情况下,我将使用它来消除tileset中的圆形孔。 预先感谢!
答案 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;
}
您还可以尝试使用递归(当您在圆内时从中心到所有邻居)-在小地图上它会快得多