In GameMaker Studio gibt es die Möglichkeit, mit Pfaden zu arbeiten. Das ist ungeheuer praktisch, kann aber auch zu Problemen führen. Bspw. wenn man das Projekt mit verschiedenen Auflösungen testet.
Hier ein Beispiel, wie man Pfade verwendet:
1 | path_start(path1, 4, path_action_stop, true); |
Das Objekt folgt nur dem Pfad path1
mit der Geschwindigkeit 4
. Der Pfad ist absolut und am Ende stoppt das Objekt. Das ist aus der Dokumentation bestens bekannt. Bei einem aktuellen Projekt, in dem ich einen komplexen Pfad benutze, ist mir aber folgendes Aufgefallen: Je nach Bildschirmauflösung verhalten sich Skalierung und Geschwindigkeit unterschiedlich, egal ob der Pfad absolut oder relativ ist.
Falls das bei Dir ebenfalls ein Problem ist, gibt es eine Lösung: Skaliere die Variablen auf die jeweilige Bildschirmauflösung. Hier ein Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Bestimme den Pfadgeschwindigkeitsfaktor basierend auf der Bildschirmgröße var screenWidth = display_get_width(); var screenHeight = display_get_height(); var pathSpeedFactorWidth = 12 / 3840 * screenWidth; var pathSpeedFactorHeight = 12 / 2160 * screenHeight; var pathScaleFactorWidth = 1 / 3840 * screenWidth; var pathScaleFactorHeight = 1 / 2160 * screenHeight; // Wähle den größeren Pfadgeschwindigkeitsfaktor aus, um die Konsistenz zu gewährleisten var pathSpeedFactor = max(pathSpeedFactorWidth, pathSpeedFactorHeight); var pathScaleFactor = max(pathScaleFactorWidth, pathScaleFactorHeight); // Starte den Pfad mit der berechneten Geschwindigkeit und Skalierung path_start(path1, pathSpeedFactor, path_action_stop, true); path_scale = pathScaleFactor; |
Ich entwickle in 4K. Meine Referenz ist somit eine Bildschirmauflösung von 3840×2160 Pixel. Für alle anderen Auflösungen muss ich es umrechnen, etwa für 1080p.
Zum Verständnis: die Ausgangsgeschwindigkeit ist bei mir 12 und bei der Skalierung steht 1 natürlich für 100 %.
Hier ein Beispiel, wo ich es verwende. Ab 1:32min folgt die Lupe einem Pfad:
Ich hoffe, dies hilft dir weiter.
Weiterführende Links
GameMaker Quicktipp: Sprites spiegeln
Timing in GameMaker-Projekten
Loading-Sequenz in GameMaker
Warum soll ich programmieren lernen?
Lernkurven in Spielen