Here is some GML code for “pixel perfect” movement in a platform game.
This goes in the player object’s Create event:
//Initialize Variables grav = 0.5; hsp = 0; vsp = 0; jumpspeed = 10; movespeed = 6;
This goes in the player object’s Step event:
//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 and gravity
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) vsp += grav;
// On the floor
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;
This is taken from https://www.youtube.com/watch?v=izNXbMdu348