if(global.pause) exit;
key_right = keyboard_check (ord("D"));
key_left = -keyboard_check (ord("A"));
key_jump = keyboard_check_pressed(ord("W"))
move = key_left + key_right;
hsp= move * movespeed;
if (vsp < 10) vsp+= grav;
if (place_meeting(x,y+1,obj_wall))
//double jumping//
if (place_meeting(x, y+1, obj_wall)) {
grounded = true; // Add grounded as a new boolean.
doublejump = 1;
}
if (key_jump) {
if (grounded) {
vsp = -jump;
grounded = false;
} else if (doublejump) {
vsp = -jump;
doublejump = 0;
}
}
if (place_meeting(x+hsp,y,obj_wall))
{
while(!place_meeting(x+sign(hsp),y,obj_wall))
{
x +=sign(hsp);
}
hsp = 0;
}
x += hsp;
if (place_meeting(x,y+vsp,obj_wall))
{
vsp = key_jump * -jump
}
if (place_meeting(x+hsp,y,obj_wall))
{
while(!place_meeting(x+sign(hsp),y,obj_wall))
{
x +=sign(hsp);
}
hsp = 0;
}
x += hsp;
if (place_meeting(x,y+vsp,obj_wall))
{
while(!place_meeting(x,y+sign(vsp),obj_wall))
{
y +=sign(vsp);
}
vsp = 0;
}
y +=vsp;
{
//wall jumping
if (key_jump) && (place_meeting(x-1,y,obj_wall) && !place_meeting(x,y+1,obj_wall) && !key_right)
{
hsp = 2;//changed
vsp = -jump;
}
if (key_jump) && (place_meeting(x+1,y,obj_wall) && !place_meeting(x,y+1,obj_wall) && !key_left)
{
hsp = -2;//changed
vsp = -jump;
}
// facing dir will be set either -1 or 1
if keyboard_check(ord('D')) +(-keyboard_check(ord('A'))) !=0
{
dir = keyboard_check(ord('D')) +(-keyboard_check(ord('A')));
image_xscale = 1;
}
// horizontal collison
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 collison
if (place_meeting(x,y+vsp,obj_wall))
{
while(!place_meeting(x,y+sign(vsp),obj_wall))
{
y+= sign (vsp);
}
vsp=0;
}
y+=vsp;
}
// conveyor belt
if place_meeting(x,y+1,obj_cbelt) {x+=2}