Ich habe kürzlich eine nette Engine gefunden, welche eine super Kollisions-Abfrage hat. Credits gehen an Shaun Spalding.
Das Problem ist jetzt, ich möchte einen Walljump einbauen, sodass man auch von der Wand abspringen kann.
Ich komme aber mit der Engine nicht so wirklich klar und weiß nicht wie ich das umsetzen kann. Ein Versuch brachte mein Spieler "rutschend" in hohem Bogen über alle Wände.
Create Event:
Step Event:
Spoiler anzeigen
Alles anzeigen
Das Problem ist jetzt, ich möchte einen Walljump einbauen, sodass man auch von der Wand abspringen kann.
Ich komme aber mit der Engine nicht so wirklich klar und weiß nicht wie ich das umsetzen kann. Ein Versuch brachte mein Spieler "rutschend" in hohem Bogen über alle Wände.
Create Event:
Step Event:
GML-Quellcode
- //smooth the camera
- camera_movement();
- //Get the player's input
- key_right = keyboard_check(vk_right);
- key_left = -keyboard_check(vk_left);
- key_jump = keyboard_check_pressed(vk_space);
- //React to inputs
- move = key_left + key_right;
- hsp = move * movespeed;
- if (vsp < 10) vsp += grav;
- if (place_meeting(x,y+1,obj_wall))
- {
- vsp = key_jump * -jumpspeed
- }
- //Horizontal Collision
- if (place_meeting(x+hsp,y,obj_wall))
- {
- while(!place_meeting(x+sign(hsp),y,obj_wall))
- {
- x += sign(hsp);
- }
- hsp = 0;
- }
- x += hsp;
- //Vertical Collision
- if (place_meeting(x,y+vsp,obj_wall))
- {
- while(!place_meeting(x,y+sign(vsp),obj_wall))
- {
- y += sign(vsp);
- }
- vsp = 0;
- }
- y += vsp;
Create
Step
). Ansonsten hat das ganze jetzt auch viel mit dem ausprobieren der Werte zu tun. Zum Beispiel solltest mal schauen ob du anstatt (-) movespeed * 2 in Zeile 45 im Step Event nicht noch einen besseren Wert findest. Dieser bestimmt wie arg der Spieler horizontal von der Wand abgestoßen wird. 