2016-04-10 11 views
0

ゲームに複数のタイルをロードする際に問題が発生しています。私のゲーム世界は現在770x450のピクセルサイズを持っています。私は位置(0,330)に1つのタイルをロードし、それが(770,330)に達するまでタイルをコピーしてx軸に沿ってロードするループを作りたがっています。私はしかし、すべてのループ時に、このループを作ることができましたMonogame - 複数のタイルをロード中

次のタイルがをロードしない、それだけで次の位置に移動し、ここでのループです:

for (int i = 0; i < 770; i += 31) 
{ 
    position = new Vector2(i, 330); 
    // Some sort of draw method here! 
    if (i == 744) 
    { 
     i = i + 26; 
     // or here... 
     position = new Vector2(i, 330); 
     // or maybe here? 
    } 
} 

そして、この場合あなたは一度だけのタイルを描画している

spriteBatch.Begin(); 
spriteBatch.Draw(gameTile, position, Color.White); 
spriteBatch.End(); 

答えて

2

:ここに私の現在のDraw()方法だ、役立ちます。 spriteBatch.Draw()コールが1つしかないのでわかります。ループ内の位置を更新するだけでは十分ではありません。あなたはそれぞれの場所でそれを描く必要があります。

public void Draw() 
{ 
    spriteBatch.Begin(); 

    for (int i = 0; i < 770; i += 31) 
    { 
     position = new Vector2(i, 330); 
     if (i == 744) 
     { 
      i = i + 26; 
      position = new Vector2(i, 330); 
     } 
     spriteBatch.Draw(gameTile, position, Color.White); 
    } 

    spriteBatch.End(); 
} 

当然ながら、Draw()メソッドでは、すべてのループ論理を避けたいと考えています。その周りの唯一の方法は、Update()メソッドで描画するすべての位置のタイルを作成することです。次に、Draw()メソッドは、すべてのgameTilesをループし、対応する位置に描画することができます。

関連する問題