在程序生成地图时遇到一些问题
Having some issues with procedurally generating a map
我正在构建一个非常简单的二维图块地图。它只是在随机位置生成一些不同的草方块,这就是它的样子:
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
就会过早退出循环一次迭代。做到 <=
.
我正在构建一个非常简单的二维图块地图。它只是在随机位置生成一些不同的草方块,这就是它的样子:
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
就会过早退出循环一次迭代。做到 <=
.