Textscroller: Wellen und einzelne Farben

  • 2Minuten

Texte sind in vielen Spielen sehr wichtig, weshalb wir uns auch immer wieder in den Tutorials damit befassen. Heute geht es um einen speziellen Textscroller. Wir hatten bereits solche Tutorials, etwa hier. Nun werden wir eine schönere Wellenbewegung realisieren und jedem Zeichen eine eigene Farbe geben.

Farbe pro Zeichen

Da die Theorie bereits im oben verlinkten Tutorial erklärt wurde, beschränke ich mich auf die wesentlichen Änderungen.

Zunächst definieren wir im Create-Event, neben anderen Variablen, einen Array, in dem wir 16 Farben mit ihren RGB-Werten vorgeben. Das lokale Array heißt txt_colors und entspricht letztlich nur einer Liste. Anschließend erstellen wir das Array char_colors und starten eine Schleife. In dieser Schleife gehen wir jedes Zeichen vom Text durch und weisen ihm eine Farbe zu, indem wir es in das neue Array schreiben. Als Hilfsvariable haben wir noch count. Hier zählen wir die Farben des Arrays txt_colors hoch und setzen es auf 0 zurück, sobald wir die letzte Farbe erreicht haben.

Textscroller 01
Der Textscroller

Hier der entsprechende Code:

Wir zeichnen

Nachdem wir alles im Create-Event vorbereitet haben, geht es an das Draw-Event. Wie üblich kümmern wir uns zunächst um die Schrift (im Beispiel f_pixel_12) und Alpha.

Dann geht es in eine for-Schleife, die so oft durchlaufen wird, wie der Text Zeichen hat. Bedenke, dass das 60mal pro Sekunde erfolgt (bei den GMS-Standardeinstellungen). D. h. bei einem Text von 500 Zeichen wird die Schleife 30.000 Mal durchlaufen.

In der Schleife suchen wir uns das aktuelle Zeichen raus (var char…) und bestimmen die y-Position. Mit draw_set_color setzen wir die Farbe. Diese wird aus dem Array char_colors ausgelesen, was wir mit der GM-Funktion make_colour_rgb tun. Anschließend zeichnen wir den Text bzw. das jeweilige Zeichen.

Nach der Schleife wird scroll_pos um den Wert scroll_speed versetzt.

Am Ende schauen wir noch nach, ob der Text den Bildschirm verlassen hat. Wenn ja, setzen wir scroll_pos auf 0 und er beginnt wieder von vorne.

Und hier der Code:

Das war es auch schon.

Autor

Abonnieren
Benachrichtige mich bei
guest

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