Infinite Scrolling Hintergrund in XNA
Ich bin Zeichnung eine Boden-textur in ein sidescrolling platformer, wie diese:
spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, _camera.GetViewMatrix(Parallax));
foreach (Sprite sprite in Sprites)
sprite.Draw(spriteBatch);
spriteBatch.End();
In Sprite.Draw()
public void Draw(SpriteBatch spriteBatch)
{
if (Texture != null)
spriteBatch.Draw(Texture, Position, new Rectangle(0, 0, Texture.Width, Texture.Height), Color.White, Rotation, Origin, Scale, SpriteEffects.None, ZIndex);
}
Wie bekomme ich die textur wiederholen in X-Richtung unendlich?
Alle Ressourcen, die erklären, wie dies zu tun wäre toll. Danke!
Meine Umsetzung der Kamera ist auf dieser Basis: http://www.david-gouveia.com/2d-camera-with-parallax-scrolling-in-xna/
BEARBEITEN
Dies ist, was ich versuchte, ich machte einen separaten Auslosung für den hintergrund wie diese:
//Draw Background
spriteBatch.Begin(SpriteSortMode.Immediate, null, SamplerState.LinearWrap, null, null,null, camera.GetViewMatrix(Vector2.One));
groundSprite.Draw(spriteBatch, (int)camera.Position.X - (int)camera.Origin.X / 2);
spriteBatch.End();
und Sprite.Draw():
public void Draw(SpriteBatch spriteBatch, int scrollX = 0)
{
if (Texture != null)
spriteBatch.Draw(Texture, Position, new Rectangle(scrollX, 0, Texture.Width, Texture.Height), Color.White, Rotation, Origin, Scale, SpriteEffects.None, ZIndex);
}
immer noch einige Probleme haben.
Zweiter Edit
Es kam einfach zu mir. Ich hatte die Parallaxe auf 1 gesetzt auf den Boden. Es sollte 0 sein, so dass es eigentlich nie bewegt. Es sieht nur wie er sich bewegt, wenn Sie die Antwort, die ich unten ausgewählt.
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht, scrollen Sie in der sprite im Raum; scrollen Sie die textur-Koordinaten verwendet werden, zu machen es.
Setzen Sie Ihren sampler zu wickeln Ihre UV-Koordinaten:
Dann geben Sie eine Quell-Rechteck beim Rendern:
Wenn das resultierende UV-Koordinaten fallen über den Rand der textur, Sie wird verpackt, indem die textur-sampler, die Ihnen die gewünschte "scrolling" - Effekt.
Zeichnen Sie den hintergrund zweimal in der Sprite-Draw-Verfahren, sondern verschieben Sie eine von Ihnen, etwa so (ungetestet):
Und dann in der update-Methode: