Das man mit Texten allerlei interessante Effekte zeigen kann, haben wir hier schon in mehreren Tutorials gesehen. Hier geht es darum, einen Text im Kreis bewegen zu lassen, wobei jeder einzelne Buchstabe mit der unteren Seite auf die Kreismitte ausgerichtet sein wird.
Der Effekt sieht so aus:
Dabei verzichte ich bewusst auf Farben und sonstigen Kram, um den Code einfach zu halten.
Für den Effekt nutzen wir ein eigenes Objekt. Im Beispiel reichen uns zwei Events.
Create-Event
1 2 3 4 5 6 7 8 9 10 | xx = room_width/2; yy = room_height/2; _x = xx; _y = yy; txt = „ www.Bytegame.de"; rotation = 90; rotation_speed = 0.5; radius = 42; col = #FFFFFF; |
Wie man sieht, können wir allerlei Einstellungen vornehmen. Wir bestimmen die Ausgangsposition mit xx
und yy
. txt
ist unser Text. Die Variable rotation
sagt uns, wie der Kreis beim Start gedreht ist, somit ist rotation_speed
natürlich die Drehgeschwindigkeit. Ein positiver Wert dreht es im Uhrzeigersinn, ein negativer Wert natürlich entgegengesetzt. Außerdem haben wir noch einen radius
und col
für die Farbe. Was es mit _x
und _y
auf sich hat, sehen wir gleich.
Draw-Event
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | rotation += rotation_speed; // Zeichne jeden Buchstaben des Textes einzeln an der berechneten Position und im berechneten Winkel for (i = 0; i <= string_length(txt); i++) { // Setze den Text des Objekts auf den aktuellen Buchstaben des Textes var text = string_char_at(txt, i); // Berechne die Position des Objekts entlang des Kreises var angle = 360 / string_length(txt) * (i - 1) + rotation; _x = xx + radius * cos(degtorad(angle)); _y = yy + radius * sin(degtorad(angle)); // Zeichne den Text an der berechneten Position und im berechneten Winkel draw_text_ext_transformed_color(_x, _y, text, 24, angle / (pi / 180), 1, 1, -angle-90, col, col, col, col, 1); } |
In der ersten Zeile drehen wir den Kreis. Ab dann beginnt eine for-Schleife, mit der wir jedes einzelne Zeichen durchgehen. Wir setzen also Buchstaben für Buchstaben im Kreis bzw. auf den Kreisumfang.
_x
und _y
leiten sich vom xx
bzw. yy
sowie radius
und angle
ab. Es handelt sich also um die Koordinaten eines jeden einzelnen Zeichens.
Zum zeichnen nutzen wir die GM-Funktion draw_text_ext_transformed_color
. Damit können wir nicht nur das Zeichen korrekt ausrichten (8. Argument) sondern auch beliebig einfärben.
Weiterführende Links
Old School Textscroller
Bitmap-Fonts im GameMaker
Textscroller: Wellen und einzelne Farben
Texteingabe in GMS