在程序生成地图时遇到一些问题

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 就会过早退出循环一次迭代。做到 <=.