Tutorial, der Umstieg von D&D zu GML mit GameMakerLite
Ein simpler topdown bot
Durch zufall ist dieses tut entstanden, damit es aber nicht auf meinem PC rumgammelt, habe ich es hier reingestellt.
Du wirst wenn du dir mal einen GML Code anschaust sehr schnell viele Sachen wiedererkennen, die du aus D&D kennst.
Im anhang ist ein zip archiv mit einem example als .gmk und eine .pdf datei.
Dieses tut gibt es auch als Internetseite
Ich werde mal versuchen zu erklären was ich da gemacht habe:
Der Gegner hat im create Event ein Code:
var_waypointxxx=floor(random(5))
Was der Macht hat man schnell erklärt:
wenn du eine neue variable einrichten willst, musst du sie im create Event definieren (muss nicht var_waypoint heißen, sondern alles was dir sonst so einfällt , außer zahlen), wenn du die variable erst später erstellen willst, var waypoint; schreiben, das erstellt ebenfalls die variable.
Also floor() rundet das was in den klammern ist ab. Du könnest auch round() benutzen, das rundet dann auf. Was random() macht erklärt sich schon fasst von selbst: Es erstellt eine zahlt, zwischen 0 und 5.
So, jetzt haben wir eine variable, var_waypointxxx, die einen wert zwischen 0 und 4 hat (nicht 5 wegen der floor Sache).
Im stepevent machen wir dann das der Gegner sich bewegt. Und das realistisch:
Also, die Funktion des if kennst du aus dem D&D dort sieht es so aus:
und im GML so:
du kannst auch mehrere Sachen als nur var_waypoint=1 hinschreiben, das sieht dann so aus:
Hier bedeutet das && "und". Es gibt dann auch noch ||, das bedeutet "oder". Damit keiner schimpft, ja, es gibt auch noch ^^, aber das brauchen wir noch nicht.
Wenn man jetzt eine variable von einem anderen Objekt herausfinden will, muss man auch noch dessen Namen davor schreiben. Also, wenn wir die variable var1 von obj_spieler herausfinden wollen, müssen wir folgendes schreiben: obj_spieler.var1
Wenn es das Objekt obj_spieler mehrmals gibt, ist obj_spieler.var1 von dem Objekt das zu erst da war.
In einem if Statement (so heißt das) kann man nicht nur variablen testen, sondern auch gleich die Funktion. Z.B:
Also, wenn der Abstand zwischen dem Objekt in dem der Code ist, und den obj_gegner kleiner ist als 100, dann macht er irgendwas, z.b. schießt.
Wenn wir dann im Beispiel die if Sachen durchhaben, stoßen wir auf den Code:
image_speed=0
image_index=direction/image_number
Was der macht ist einfach. image_speed ist eine vorgefertigte variable, die die geschwindichkeit der Animation bestimmt. Wir setzten dies auf null.
Image_index ist ebenfalls eine vorgefertigte variable, die bestimmt welches der Frames die die Animation hat gezeigt wird.
Direction ist auch eine vorgefertigte variable, die wir hier durch image number (auch eine vorgefertigte variable) teilen, um immer den richten image_index im Verhältnis zur Fahrtrichtung zu haben. Damit das funktioniert muss dein Sprite ungefähr so aussehen:
Was wir jetzt gemacht haben:
Wir haben durch random einen zufälliges obj_waypoint ausgesucht, dessen x und y Koordinaten herausgefunden, sind dort hin gelaufen, und haben das Sprite richtig gedreht.
Natürlich befasst sich GML mit viel mehr Sachen. Wenn mal probleme sind, dann ist alles sehr detailiert in der Hilfe beschreiben.
Viel spaß
Ein simpler topdown bot
Durch zufall ist dieses tut entstanden, damit es aber nicht auf meinem PC rumgammelt, habe ich es hier reingestellt.
Du wirst wenn du dir mal einen GML Code anschaust sehr schnell viele Sachen wiedererkennen, die du aus D&D kennst.
Im anhang ist ein zip archiv mit einem example als .gmk und eine .pdf datei.
Dieses tut gibt es auch als Internetseite
Ich werde mal versuchen zu erklären was ich da gemacht habe:
Der Gegner hat im create Event ein Code:
var_waypointxxx=floor(random(5))
Was der Macht hat man schnell erklärt:
wenn du eine neue variable einrichten willst, musst du sie im create Event definieren (muss nicht var_waypoint heißen, sondern alles was dir sonst so einfällt , außer zahlen), wenn du die variable erst später erstellen willst, var waypoint; schreiben, das erstellt ebenfalls die variable.
Also floor() rundet das was in den klammern ist ab. Du könnest auch round() benutzen, das rundet dann auf. Was random() macht erklärt sich schon fasst von selbst: Es erstellt eine zahlt, zwischen 0 und 5.
So, jetzt haben wir eine variable, var_waypointxxx, die einen wert zwischen 0 und 4 hat (nicht 5 wegen der floor Sache).
Im stepevent machen wir dann das der Gegner sich bewegt. Und das realistisch:
GML-Quellcode
- if(var_waypointxxx=1) // wenn die variable var_waypoint 1 ist, dann macht er folgendes {
- mp_potential_step(obj_waypoint1.x,obj_waypoint1.y,3,true)// läuft zu waypoint1 (da haben wir die mp_potential step funktion wieder)
- if (x=obj_waypoint1.x && y=obj_waypoint1.y) // dann haben wir noch ein if im if, der herausfindet ob x an obj_waypoints x ist und das selbe mit y
- {
- var_waypointxxx=floor(random(5)) // wenn das der Fall ist, dann wird die variable var_waypoint neu generiert
- }
- }
Also, die Funktion des if kennst du aus dem D&D dort sieht es so aus:
und im GML so:
du kannst auch mehrere Sachen als nur var_waypoint=1 hinschreiben, das sieht dann so aus:
Hier bedeutet das && "und". Es gibt dann auch noch ||, das bedeutet "oder". Damit keiner schimpft, ja, es gibt auch noch ^^, aber das brauchen wir noch nicht.
Wenn man jetzt eine variable von einem anderen Objekt herausfinden will, muss man auch noch dessen Namen davor schreiben. Also, wenn wir die variable var1 von obj_spieler herausfinden wollen, müssen wir folgendes schreiben: obj_spieler.var1
Wenn es das Objekt obj_spieler mehrmals gibt, ist obj_spieler.var1 von dem Objekt das zu erst da war.
In einem if Statement (so heißt das) kann man nicht nur variablen testen, sondern auch gleich die Funktion. Z.B:
Also, wenn der Abstand zwischen dem Objekt in dem der Code ist, und den obj_gegner kleiner ist als 100, dann macht er irgendwas, z.b. schießt.
Wenn wir dann im Beispiel die if Sachen durchhaben, stoßen wir auf den Code:
image_speed=0
image_index=direction/image_number
Was der macht ist einfach. image_speed ist eine vorgefertigte variable, die die geschwindichkeit der Animation bestimmt. Wir setzten dies auf null.
Image_index ist ebenfalls eine vorgefertigte variable, die bestimmt welches der Frames die die Animation hat gezeigt wird.
Direction ist auch eine vorgefertigte variable, die wir hier durch image number (auch eine vorgefertigte variable) teilen, um immer den richten image_index im Verhältnis zur Fahrtrichtung zu haben. Damit das funktioniert muss dein Sprite ungefähr so aussehen:
Was wir jetzt gemacht haben:
Wir haben durch random einen zufälliges obj_waypoint ausgesucht, dessen x und y Koordinaten herausgefunden, sind dort hin gelaufen, und haben das Sprite richtig gedreht.
Natürlich befasst sich GML mit viel mehr Sachen. Wenn mal probleme sind, dann ist alles sehr detailiert in der Hilfe beschreiben.
Viel spaß
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von SDX ()