二维网格上的统一路径生成


roadTopStartX = Random.Range(5, 10);  // Path's x position which creation begins
roadTopStartY = Random.Range(8, 12);  // Path's y position which creation begins

roadTopLength = Random.Range(4, 9); // Path's length
for (int i = 0; i < roadTopLength; i++)
{
GameObject tile = GameObject.Find("Tile" + (roadTopStartX + i) + " " + roadTopStartY); //I created grid whose tile's name Tile X Y like Tile 0 0
GameObject road =  Instantiate(roadPrefab, tile.transform.position, tile.transform.rotation);

road.name = "Road"+ " " + (roadTopStartX + i) + " " + roadTopStartY;


roads.Add(road);
}

这就是我如何在2d网格上创建随机路径,你知道更好的解决方案吗?因为当思考变得更复杂时,游戏对象。find对我来说很痛苦

我找到了一个更可靠的解决方案:(多亏了derHugo(

public GameObject findTile(int x,int y)
{
GameObject findTilex = GameObject.Find("Tile" + (tileX + x) + " " + 
(tileY + y));
return findTilex;
}

示例如何获得邻居瓷砖

public void getNeighbours()
{
if (findTile(0, 1) != null)
{
upper = findTile(0, 1);

}
if (findTile(0, -1) != null)
{
below = findTile(0, -1);
}
if (findTile(1, 0) != null)
{
right = findTile(1, 0);
}
if (findTile(-1, 0) != null)
{
left = findTile(-1, 0);
}
if (findTile(1, 1) != null)
{
rightCrossTop = findTile(1, 1);
}
if (findTile(1, -1) != null)
{
rightCrossUnder = findTile(1, -1);
}
if (findTile(-1, 1) != null)
{
leftCrossTop = findTile(-1, 1);
}
if (findTile(-1, -1) != null)
{
leftCrossBottom = findTile(-1, -1);
}
}

最新更新