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

时间:2016-08-08 17:43:51

标签: c# unity3d procedural-generation

我正在构建一个非常简单的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,这意味着地图有一个贴在左下角的单个图块。

我对这里发生的事情或如何解决这个问题感到有些困惑。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题是你使用的<小于tileHeight,所以一旦它实际点击<=,它就会过早退出循环一次迭代。设为public class GcmMessageHandler extends GcmListenerService { @Override public void onMessageReceived(String from, Bundle data) { String message = data.getString("message"); String title = data.getString("title"); createNotification(title, message); }}