• 2Minuten
blank

Farbverläufe bei Zeichenfunktionen in GameMaker sind so eine Sache: Zwar gibt es von Haus aus ein paar Möglichkeiten, aber wenn man die Farben wechseln möchte, kann das ein bisschen knifflig werden. Dieses Tutorial zeigt einen praktischen Ansatz.

Grundsätzlich sind Farbverläufe in GameMaker möglich. Für die Zeichnung von Rechtecken, Kreisen oder Linien existieren entsprechende Befehle. Etwa draw_circle_colour, draw_line_colour oder draw_rectangle_colour. In meiner Demo NO RUST hatte ich aber das Ziel, oben und unten Linien zu zeichnen, bei denen sich die Farben wechseln. Das kannst du nach etwa 13 Sekunden sehen:

Wozu ist das im Spiel gut?

Farben bzw. Farbverläufe können unterschiedliche Dinge symbolisieren. Etwa eine Lebensleiste, die von Rot (links) nach Grün (rechts) gehen kann. Ein Wechsel dieser Farben könnte dem Spieler andere Informationen geben, etwa von Weiß nach Blau um zu zeigen, dass der Gegner derzeit unverwundbar ist. Und statt einfach nur die beiden Farben zu tauschen, kannst du es in beliebig vielen Schritten wechseln.

Theorie

In der Theorie sollte man vor allem zwei Dinge berücksichtigen.

  1. Wenn wir, wie in meiner Demo, viele Farben wollen, machen wir das am besten über ein Array.
  2. Über den Befehl merge_colour können wir in GameMaker Studio zwei Farben miteinander mischen.

Praxis

In meinem Beispiel verwende ich lediglich eine der beiden Linien aus der Demo und zeichne sie in der Mitte des Bildschirms.

Linie mit Farbverlauf
Linie mit Farbverlauf

Event Create

In meinem Beispiel habe ich 20 Farben definiert. Die Variable numColors brauchen wir, damit wir das auch wissen. In solchen Fällen ist es immer gut, wenn es automatisch gezählt wird, dann müssen wir nicht laufend die Werte ändern, wenn wir uns für mehr oder weniger Farben entscheiden.

Die Farben in rainbowColors sind bereits nach einem bestimmten System angeordnet. Zu Beginn starten wir mit 0 (also die erste Farbe) und enden bei 2 (die dritte Farbe). Außerdem brauchen wir noch einen Counter.

Event Draw

Im Draw-Event wird zuerst eine neue Farbe col1 für die Linie berechnet. Diese Farbe wird durch eine Mischung zwischen der aktuellen Farbe rainbowColors[cCount] und der Endfarbe rainbowColors[countEnd] bestimmt, wobei das Mischverhältnis 0,5 beträgt.

Danach wird eine Linie von links nach rechts auf der Bildschirmmitte gezeichnet. Die Linie hat eine Breite von 4 Pixeln und den Farbverlauf col1 bis rainbowColors[cCount]. Die Positionen der Linie sind festgelegt, um von der linken Seite des Raums x = 0 bis zur rechten Seite des Raums x = room_width und auf halber Höhe des Raums y = room_height/2 zu verlaufen.

Schließlich wird überprüft, ob cCountTiming größer oder gleich 10 ist. Wenn dies der Fall ist, wird überprüft, ob cCount und countEnd kleiner als die Gesamtzahl der Farben im Array sind. Wenn ja, werden sie inkrementiert, andernfalls werden sie auf 0 zurückgesetzt. cCountTiming wird zurückgesetzt, um die Zeit bis zur nächsten Farbänderung zu zählen.

Bei einer Spielgeschwindigkeit von 60 FPS wird die Farbe sechsmal pro Sekunde gewechselt.

Das war es auch schon. Mit dieser Technik sollten Farbverläufe in deinem Spiel kein Problem mehr sein.

Weiterführende Links

Shader-Effekt: CRT
Selbstspielendes Breakout
Projekt Snake
Projekt Tic-Tac-Toe – Teil 1

Autor

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Inline Feedbacks
Alle Kommentare anzeigen