2016-08-08 8 views
0

私は非常に単純な2dタイルマップを作成しています。私は2 problems-に実行した手順的に地図を生成する際に問題が発生する

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でそれが生成マップであるべきと言う:それはちょうどそれは次のようになります。ここでは、ランダムな場所に、いくつかの異なった草のタイルを生成します合計100個のタイルがランダムに配置された10x10

代わりに2つの奇妙な物事が最初に発生しているが、あなたのマップが10x10のされている場合、それは実際にそれがy軸上の短い一つの層を停止して意味が10x9を生成していることです。 2番目のグリッド(芝生のタイル)は0,0で作成されていますが、残りのマップは少なくともx = 1で作成されているため、地図の下部に付着している単一のタイルが残っています。

私はここで起こっまたはどのようにそれを修正するいただきました!のよう少し困惑しています。どんな助けでも大歓迎です。

+1

これを行うためにネストされた 'for'ループを使用しない理由はありますか? – Soviut

答えて

1

<を使用しているため、実際にはtileHeightにヒットしてからループ1の繰り返しが早すぎます。それを<=にする。

+0

最初の問題を解決してupvoteと答えましたが、0,0で産んだ孤独なタイルはどうですか? – ParagonTime

+0

それは無関係である可能性が高いです。シーンに元のプレハブが含まれていないことを確認します。また、どこにでもインスタンスを生成するテストコードがないことを確認してください。 – Soviut

関連する問題