Não tenho muito conhecimento, mas com o pouco que tenho vou te ajudar.
Primeiro precisamos de algumas variáveis, vá no evento CREATE e crie as seguintes variáveis, elas são:
;
Feito isso vamos para o STEP. O que faremos aqui é setar os controles e a velocidade de movimento, para isso faremos o seguinte:
Código: Selecionar todos
//controle
var r = keyboard_check(vk_right);
var l = keyboard_check(vk_left);
var u = keyboard_check(vk_up);
var d = keyboard_check(vk_down);
//velocidade de movimento
vx = vel_move * (r - l); //mover na horizontal
vy = vel_move * (d - u); //mover na vertical
Certo. Já que já temos o controle e a velocidade de movimento vamos para a colisão.
Código: Selecionar todos
//colisão horizontal
repeat(abs(vx)){
if (!place_meeting(x+sign(vx), y, obj_solido)){
x += sign(vx);
}
else { vx = 0; }
}
//colisão vertical
repeat(abs(vy)){
if (!place_meeting(x, y+sign(vy), obj_solido)){
y += sign(vy);
}
else { vy = 0; }
}
Agora é só fazer o teste.