Sterne aus der Tiefe

  • 5Minuten

Bei Sternenscrollern/Starscroller gibt es unzählige Varianten. Ein Klassiker ist der, bei dem die Sterne von hinten auf den Betrachter zufliegen und dabei immer größer und heller werden. Genau dies geschieht im folgenden Tutorial.

Das ist unser Resultat. Wozu man das brauchen kann? Credits, um eine Handlung zu erzählen oder als Hintergrund im Hauptmenü. Man kann natürlich die Kreise auch durch Sprites ersetzen, die Farbe ändern und vieles mehr. Durch den Korridor in der Mitte haben wir auch etwas Platz für Text, ohne das die Sterne nennenswert stören würden.

Wir erstellen zunächst ein Objekt. Wir brauchen hier nur zwei Events, nämlich Create und Draw.

Create-Event

Wir definieren die Anzahl der Sterne, die Geschwindigkeit und die Distanz zur Kamera bzw. zum Betrachter. Dann geben wir noch die Mitte des Raumes an.

Daraufhin starten wir den Zufallsgenerator und füllen das Array star[] mit zufälligen Koordinator für x, y und z. Jetzt, wo wir die Startkoordinaten der Sterne haben, können wir sie zeichnen.

Draw-Event

Bevor wir in die Schleife gehen, setzen wir die Farbe.

In der Schleife verändern wir die Position eines jeden Sterns, bevor wir ihn zeichnen. zz wird um starsSpeed reduziert, um den Stern nach vorne zu bewegen. Wenn zz kleiner als 1 ist, bedeutet dies, dass der Stern außerhalb des sichtbaren Bereichs ist und wird daher neu positioniert:

  • star[i,0] und star[i,1] werden zufällig innerhalb des Raums neu generiert.
  • zz wird auf room_width/4 gesetzt, um den Stern wieder in den sichtbaren Bereich zu bringen.

Die aktualisierte zz-Koordinate wird im Array star gespeichert.

sx und sy berechnen die Position des Sterns auf dem Bildschirm unter Berücksichtigung der Perspektive. r berechnet den Radius des Sterns basierend auf sx, sy und der Breite des Raums. Wenn r größer als 1.5 ist, wird er auf 1.5 begrenzt.

perspective berechnet den Perspektivenfaktor basierend auf der Entfernung zur Kamera und der aktuellen zz-Koordinate.

draw_set_alpha(0.2+r) setzt die Transparenz des gezeichneten Sterns abhängig von r. draw_circle zeichnet den Stern an vier Positionen auf dem Bildschirm, um ein leuchtendes Effekt zu erzeugen. Dadurch entsteht der coole Eindruck, man würde durch eine Art Korridor fliegen.

Kurvenbewegung

In diesem Beispiel wird der Code für die Kurvenbewegung hinzugefügt, indem der Winkel (angle) und der Radius (radius) verwendet werden. Der Winkel wird basierend auf der zz-Koordinate berechnet und beeinflusst die Kurvenform. Der Radius definiert die Größe der Kurve. Die Variablen curveX und curveY berechnen die Abweichung der X- und Y-Koordinaten entlang der Kurve.

Weniger lineare Bewegung

In dieser Variation werden die Sterne zusätzlich zur linearen Bewegung um einen zufälligen Wert in horizontaler und vertikaler Richtung verschoben. Die Verschiebung wird durch die Variablen offsetX und offsetY gesteuert, die zufällige Werte im Bereich von -1 bis 1 erhalten. Die Verschiebung wird dann auf die X- und Y-Koordinaten jedes Sterns addiert.

Durch die Hinzufügung der zufälligen Verschiebung erhalten die Sterne eine gewisse Unregelmäßigkeit in ihrer Bewegung, was den Effekt interessanter und lebendiger macht.

Farbvariation

Machen wir es bunt. Hierzu müssen wir auch das Create-Event anpassen.

Create-Event

Draw-Event

Man kann natürlich die RGB-Werte im Create-Event so manipulieren, dass sie nur eine bestimmte Farbschattierung hervorbringt. Möchte man bspw. Variationen von Hellblau haben, könnten die Zeilen so aussehen:

Viel Spaß beim experimentieren!

Weiterführende Links

Horizontaler Sternenscroller und Parallax scrolling
Bitmap-Fonts im GameMaker
Sonnenblumen und der goldene Schnitt
Textscroller: Wellen und einzelne Farben

Autor

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x