Home Tutorials Game Maker Horizontaler Sternenscroller und Parallax scrolling

Horizontaler Sternenscroller und Parallax scrolling

0
Sternenscroller
Bild von Hans auf Pixabay
  • 2Minuten

Sternenscroller sind ein alter, aber heute noch sehr nützlicher Effekt. Es gibt sie in vielen verschiedenen Varianten. Die horizontale Version ist nicht nur für Menüs, Credits oder Intros gut geeignet, sondern auch für Weltraumshooter. Dieses Tutorial zeigt, wie man das leicht realisiert.

Das Prinzip

Bei den Sternen ist es zunächst egal, ob sie als Kreise, Quadrate oder Sprites gezeichnet werden. Im Beispiel verwende ich Kreise und, bei den kleinsten, Punkte. Meine Version scrollt von links nach rechts, ihr könnt das aber gerne verdrehen, von oben nach unten oder umgekehrt scrollen.

Das Prinzip ist dabei denkbar einfach und wer sich mit Arrays und for-Schleifen auskennt, wird keine Probleme damit haben, es zu verstehen. Wir brauchen lediglich ein Objekt. Darin generieren wir Arrays, in denen wir die x- und y-Position eines jeden Sterns definieren.

Plural? Ja, im Beispiel wird es vier Ebenen von Sternen geben. Jede Ebene, von hinten nach vorne, hat größere Sterne, die schneller scrollen. Dadurch entsteht ein toller räumlicher Effekt. Dieses Prinzip nennt man auch „Parallax scrolling“. Dabei brauchen wir in GML im Raum keine verschiedenen Ebenen, wir zeichnen alles auf derselben Fläche.

Im Draw-Event haben wir für jede Ebene eine eigene Schleife, mit deren Hilfe wir die Sterne neu positionieren. Jede dieser Ebenen hat nicht nur seine eigene Größe und Geschwindigkeit, sondern auch Transparenz. Das bedeutet letztlich, dass die vorderen Sterne größer, schneller und heller sind, als die hinteren. Die Farbe könnt ihr natürlich selbst wählen und sogar für jede Ebene anpassen.

Create-Event

Dem oben beschriebenen Prinzip folgend ist es ziemlich einfach. Wir füllen 4 Arrays mit den Koordinaten. Dabei haben wir 40, 60, 100 und 200 Sterne, je nach Ebene. Am Ende definieren wir für jede Ebene eine Geschwindigkeit und eine Größe.

Warum wir nur drei Größen definieren? Nun, bei den 200 Sternen verwenden wir draw_point() und ein Punkt hat keine Größe, die wir definieren könnten. Ihr könnt das natürlich beliebig anpassen.

Wie man sieht, befinden sich alle Sterne zwischen 16 und room_height-32. Das lässt oben und unten ein wenig Platz. Auch das lässt sich natürlich beliebig anpassen.

Draw-Event

Nun werden die Sterne gezeichnet, was ebenfalls viermal identisch passiert. Die Schleifen werden so oft durchlaufen, wie es Sterne im Array gibt. Bei jedem Stern addieren wir die Geschwindigkeit zur x-Koordinate hinzu. Dann werden die Punkte bzw. Kreise gezeichnet. Zum Ende hin prüfen wir noch, ob sich der Stern außerhalb des Raums befindet. Wenn ja, setzen wir ihn wieder zurück.

Das war es auch schon!

Autor

Abonnieren
Benachrichtige mich bei

0 Comments
Inline Feedbacks
Alle Kommentare anzeigen
wpDiscuz
0
0
Ich würde mich über Ihre Meinung freuen, bitte kommentiere.x
Die mobile Version verlassen