2016-04-10 8 views
0

Ich habe Probleme, mehrere Kacheln in mein Spiel zu laden. Meine Spielwelt hat momentan eine Pixelgröße von 770x450. Ich habe eine einzelne Kachel an Position (0, 330) geladen und wollte eine Schleife erstellen, die die Kachel entlang der x-Achse kopiert und lädt, bis sie (770, 330) erreicht.Monogame - Laden mehrerer Kacheln

ich in der Lage gewesen, diese Schleife zu machen, aber bei jeder Schleife, die nächste Kachel nicht geladen, bewegt er sich nur auf die nächste Position, hier ist die Schleife:

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? 
    } 
} 

Und wenn dies meine aktuelle Draw() Methode hilft, hier ist:

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

Antwort

2

Sie nur einmal die Fliese zeichnen. Sie können sagen, weil Sie nur einen spriteBatch.Draw() Anruf haben. Es reicht nicht aus, die Position innerhalb der Schleife nur zu aktualisieren. Sie müssen es auch an jedem Ort zeichnen.

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(); 
} 

Natürlich wollen Sie das ganze loopy Logik in der Draw() Verfahren zu vermeiden. Der einzige Weg ist das Erstellen einer Kachel für jede Position, in der sie in Ihrer Update() Methode gezeichnet werden soll. Dann könnte die Methode Draw() einfach durch alle Ihre Spieltabellen laufen und sie an der entsprechenden Position zeichnen.