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

本文关键字:问题 遇到 程序生成 地图 | 更新日期: 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,它就过早地退出循环一次迭代。设置为<=