Heute zeig ich euch wie ihr mit dem Game Maker ein Simples Jump and Run erstellt.
Hier ist eine kurze Liste was ihr benötigt
- Game Maker
- Game Maker Grundkentnisse
Ich werde es so einfach wie möglich für euch machen.
Da ich gerne auf Drag and Drop verzichte ist das hier ein Code Tutorial.
So dann fangen wir auch gleich mal an...
Als erstes macht ihr ein Neues Spiel und erstellt 5 Sprites (als beispiel 32x32)
Code:
[COLOR="Orange"]spr_player_idle spr_player_move spr_block spr_ramp_l spr_ramp_r [/COLOR]
Code:
[COLOR="Orange"] spr_ramp_l spr_ramp_r [/color]
Und dann setzt ihr noch bei X: anstatt eine 0 eine 1 rein.
Das sieht dann so aus:
So das hätten wir schonmal.
Nun kommen wir zu den Objecten.
Als erstes erstellen wir 5 Objecte,
Code:
[COLOR="Orange"]obj_player obj_block_parent obj_block obj_ramp_r obj_ramp_l[/COLOR]
Code:
[COLOR="Orange"] obj_block obj_ramp_r obj_ramp_l obj_block_parent[/COLOR] (Nur solid keinen parent auswählen!)
und als Parent
Code:
[COLOR="Orange"] obj_block_parent [/color]
das sieht dann wie folgt aus:
So nun kommen wir zu dem etwas spannenderen Teil.
Als erstes bearbeiten wir obj_player.
Dazu erstellen wir ein Step-Event (
)und dort packen wir einen Code rein (
)Nun fangen wir als erstes mit dem wohl wichtigstem im Jump and Run Game an, die Gravitation!
Dazu packen wir folgenden code in das Step event:
Code:
if place_free(x,y+1) //Checken ob Platz frei ist!
{
gravity = 1; //Gravitation auf 1 setzen
}
else //Wenn kein Platz frei ist...
{
gravity = 0; //...Gravitation auf 0 setzen
}
Doch darunter packen wir noch etwas:
Code:
if vspeed > 14 //Wenn die Vertikale Geschwindigkeit größer als 14 ist dann...
{
vspeed = 14; //...ist vspeed = 14
}
Der fertige Code müsste nun so aussehen:
Code:
if place_free(x,y+1) //Checken ob Platz frei ist!
{
gravity = 1; //Gravitation auf 1 setzen
}
else //Wenn kein Platz frei ist...
{
gravity = 0; //...Gravitation auf 0 setzen
}
if vspeed > 14 //Wenn die Vertikale Geschwindigkeit größer als 14 ist dann...
{
vspeed = 14; //...ist vspeed = 14
}
Das wollen wir ja nicht!
Und deshalb machen wir folgendes:
Wir Erstellen ein Neues Collision - Event (
)(mit obj_block_parent) und packen dort wieder ein Code rein, in den wir dashier reinschreiben:Code:
move_contact_solid(270,4)// 270 => Direction => Vertikal nach unten , 4 => Maximale Entfernung. Wenn man nun den Block berührt ist es ein fester Gegenstand! vspeed = 0; //vspeed = 0 , also man fällt nun nichtmehr hinunter!
und ein paar Blöcke reinpacken und auf den grünen Pfeil ganz oben drücken ( oder F5).
Das sieht bei mir nun so aus:
Naja aber das ist ja noch nicht alles nun kommen wir zu dem etwas schwereren Teil, undzwar die Bewegung.
Dazu gehen wir wieder das Step event vom obj_player und öffnen den Code
ganz unten packen wir dashier rein:
Code:
if (keyboard_check(ord("D"))) // Wenn man auf der Tastatur D drückt ( ord("D") für pfeil tasten vk_left/right/up/down ) dann...
{
if place_free(x+4,y) // wenn der Platz frei ist 4 pixel neben dem player dann...
{
x+= 4; // wird die x Position von dem Player um 4 erhöht!
sprite_index = spr_player_move; // Der Sprite des Players wird nun zu dem bewegungs sprite gechanged!
image_xscale = 1; // die Image XScale ( oder auch Spiegelung der X-Achse) ist 1 also normal
}
else //Wenn nicht!
{
if place_free(x+4,y-4) // Checken ob vllt etwas höher noch platz Frei ist! ( rampen Effekt!)
{
x+=4; //hab ich schon erklärt
y-=4; // die X Position des Players wird um 4 reduziert damit er nach oben geht!
sprite_index = spr_player_move;
image_xscale = 1;
}
}
}
Dieses event wiederholt man auch für den Anderen button! doch bitte beachten das die Werte anders Abgezogen werden müssen!:
Code:
if (keyboard_check(ord("A"))) // Wenn man auf der Tastatur A drückt ( ord("A") für pfeil tasten vk_left/right/up/down ) dann...
{
if place_free(x-4,y) // wenn der Platz frei ist 4 pixel neben dem player dann...
{
x-= 4; // wird die x Position von dem Player um 4 reduziert!
sprite_index = spr_player_move; // Der Sprite des Players wird nun zu dem bewegungs sprite gechanged!
image_xscale = -1; // die Image XScale ( oder auch Spiegelung der X-Achse) ist -1 also spiegelverkehrt!
}
else //Wenn nicht!
{
if place_free(x-4,y-4) // Checken ob vllt etwas höher noch platz Frei ist! ( rampen Effekt!)
{
x-=4; //hab ich schon erklärt
y-=4; // die X Position des Players wird um 4 reduziert damit er nach oben geht!
sprite_index = spr_player_move;
image_xscale = -1;
}
}
}
Der Fertige Code sieht bei mir nun so aus:
Wie man schwer erkennen kann nimmt der Code langsam an Masse an, doch fertig sind wir noch nicht!
Als nächstes wollen wir ja das der Sprite nicht die ganze Zeit der Bewegungs Sprite ist!
und deshalb packen wir wieder ganz unten hin:
Code:
if (keyboard_check_released(ord("D"))) //checken ob D losgelassen worden ist!
{
sprite_index = spr_player_idle; //Sprite auf den Bewegungslosen Sprite zurücksetzen!
image_xscale = 1;
}
if (keyboard_check_released(ord("A"))) //checken ob A losgelassen worden ist!
{
sprite_index = spr_player_idle; //Sprite auf den Bewegungslosen Sprite zurücksetzen!
image_xscale = -1;
}
So nun ist es auch schon fast geschafft!
das einzige was wir noch hinzufügen wollen ist sogar im Type des Games enthalten Jump and Run!
So dazu packen wir ganz unten in den Code wieder folgendes rein:
Code:
if (keyboard_check(ord("W"))) //gucken ob W gedrückt wird!
{
if place_meeting(x,y+1,obj_block) or place_meeting(x,y+1,obj_ramp_l) or place_meeting(x,y+1,obj_ramp_r) // Wenn man den boden berührt dann... ( or => oder => sollte es nicht so sein guckt man ob es vllt auf die Funktion NACH dem or geht )
{
y-=1; //springt er :)
vspeed -=8; // <-Geschwindigkeit!
}
}
Hier nocheinmal mein Fertiger Code:
Ich hoffe das es bei euch genauso gut klappt , wie bei mir und es euch gefallen hat!
Feedbacks sind immer gern gesehen ( aber bitte nicht beleidigen )
Die GMK hab ich nochmal als Dateianhang dazu gepackt.
Mfg
[X]Gold






