Wie würde ich eine endlose Straße implementieren, die der Spieler herunterläuft?

17

Ich möchte die Illusion erzeugen, dass ein Mann einen langen Weg entlang läuft, dh dieses Bild

http://camlinecambridgelimited.web.officelive.com/images/road%20graphic1.jpg

Wenn du Temple Run auf dem iPhone gespielt hast, ist es dasselbe Prinzip, aber anstelle eines Tempels ist es eine normale Straße.

Ich möchte wissen, wie dies umgesetzt wird. Wiederhole ich dieses Straßenbild beispielsweise einfach in einer Schleife?

Solomon
quelle

Antworten:

16

Ich würde ein einzelnes texturiertes Quad auf den Boden zeichnen (dh auf der XZ-Ebene liegen), so groß wie der sichtbare Bereich sein sollte, und dann mit den Scheitelpunkt- Texturkoordinaten (wobei der Texturadressierungsmodus auf Umbruch eingestellt ist ) spielen, um kümmern sich automatisch um sowohl Textur Wiederholung und Textur Scrollen .

  1. Wenn Sie die Textur wiederholen möchten, anstatt eine vertikale Texturkoordinate von [0 bis 1] festzulegen, stellen Sie diese von [0 bis N] ein, wobei N die Häufigkeit ist, mit der die Textur wiederholt werden soll. Passen Sie diesen Wert an, je nachdem, wie groß Ihr Quad im Vergleich zu Ihrer Texturhöhe ist.
  2. Zum Scrollen scrolle ich einfach die vertikale Texturkoordinate, so dass sie nicht von [0 bis N] reicht, sondern von [inc bis N + inc], wobei der Wert von inc für jeden Frame erhöht oder erniedrigt wird. Von Zeit zu Zeit wickelte ich inc zurück zum Ursprung, um ein Überlaufen / Unterlaufen zu verhindern.

BEARBEITEN Ich habe gerade versucht, dies genau so zu implementieren, wie ich es beschrieben habe (aber in XNA), und es hat ganz gut funktioniert. Sehen Sie dieses Video der Demo. Quellcode hier für Interessierte.


Zum Beispiel, wenn N gleich 3 ist, erhalten Sie so etwas wie das Bild unten (ich habe den mittleren Bereich rot gestrichen, damit Sie sehen können, wo die Wiederholung auftritt). Wenn Sie dann einfach den Wert von inc ändern , wird die Straße in die eine oder andere Richtung gescrollt, je nachdem, ob Sie sie inkrementiert oder dekrementiert haben.

Bildbeschreibung hier eingeben

David Gouveia
quelle
Dieselbe Technik kann verwendet werden, um die Animation von Tank-Threads zu fälschen. Natürlich ist es nicht verwendbar, wenn Sie jedes Kettensegment modellieren ...
Exilyth
1

Wenn Sie eine endlose Straße "real" machen möchten, erstellen Sie drei Oberflächen und lassen sie sich durchlaufen, wenn sich jede Oberfläche außerhalb der Sicht bewegt. Platziere die Flächen von Ende zu Ende im Weltraum und bewege sie alle in Richtung der Kamera. Wenn sich das nächste Ende von der Kamera entfernt, setzen Sie seine Position auf das Ende der am weitesten entfernten Fläche zurück.

Wenn Sie es als Sprite mit der Illusion von Bewegung implementieren möchten, müssen Sie eine Reihe verschiedener Texturen erstellen, die ungefähr so ​​aussehen sollten:

Während sich die Ansicht vorwärts bewegt, durchlaufen Sie die Texturen der Reihe nach.

Kitt Basch
quelle
0

Das Bild zu wiederholen ist eine gute Idee. Finden Sie heraus, wie viele Wiederholungen auf dem Bildschirm sichtbar sein müssen, und zeichnen Sie das Bild so oft. Während die Straße rollt, gibt es einen Punkt, an dem sich ein Bild vollständig hinter der Kamera befindet und somit unsichtbar ist. An diesem Punkt möchten Sie das Bild von hinten an das Ende Ihres endlichen Bildstreifens verschieben.

Während wir gerade dabei sind, können Sie den besten Effekt erzielen, indem Sie die unsichere Perspektive eines rennenden Mannes nachahmen. Nehmen Sie einen Film auf, in dem Sie aus der Perspektive Ihrer Augen laufen, und studieren Sie ihn.

Stefan Majewsky
quelle
2
Das funktioniert nicht wirklich, denn sein Bild ist Perspektive. Er würde verschiedene Bilder brauchen, um als Animation zu spielen.
Bobby