在程序生成地图时遇到一些问题
本文关键字:问题 遇到 程序生成 地图 | 更新日期: 2023-09-27 18:01:33
我正在构建一个非常简单的2d贴图。它只是在随机位置生成一些不同的草砖,这是它的样子:
public int tileHeight; //y
public int tileWidth; //x
int tileHeightCounter;
int tileWidthCounter;
public GameObject[] floorTiles;
void Start(){
tileHeightCounter = 0;
tileWidthCounter = 0;
while(tileHeightCounter < tileHeight){
Vector3 tileSpawnPoint = new Vector3 (tileWidthCounter, tileHeightCounter, 0);
GameObject groundTiles = (GameObject)Instantiate (floorTiles[Random.Range(0, floorTiles.Length)], tileSpawnPoint, Quaternion.identity);
groundTiles.transform.parent = transform;
if (tileWidthCounter == tileWidth) {
tileWidthCounter = 0;
tileHeightCounter++;
}
tileWidthCounter++;
}
}
我遇到了两个问题-假设你的tileHeight是10,你的tileWidth也是10,那么它生成的地图应该是10x10,随机分布100个总共的瓷砖。
相反,发生了两件奇怪的事情:首先,如果你的地图是10x10,它实际上会生成10x9,这意味着它会在y轴上少停一层。第二个是在0,0处创建一个网格(草贴图),但地图的其余部分至少以x为1创建,这意味着地图的左下角有一个单独的贴图。
我有点困惑,这里发生了什么或如何解决它。
问题是您使用的<
小于,因此一旦它实际到达tileHeight
,它就过早地退出循环一次迭代。设置为<=