var r,l,u,d,h,v,wall;//h代表horizontal,v代表vertical
//***八方朝向
r=keyboard_check(vk_right);
l=keyboard_check(vk_left);
d=keyboard_check(vk_down);
u=keyboard_check(vk_up);
switch(r+l*2+d*4+u*8){
case 1:h=1;v=0;break;
case 2:h=-1;v=0;break;
case 4:h=0;v=1;break;
case 8:h=0;v=-1;break;
case 5:h=1;v=1;break;
case 9:h=1;v=-1;break;
case 6:h=-1;v=1;break;
case 10:h=-1;v=-1;break;
default:h=0;v=0;
}
if(isFrozen){
h=0;
v=0;
}
//***碰到障碍物后停止(可贴近)
wall=instance_place(x+h*spd,y,obj_wall);
if(wall != noone){
x=wall.x-h*32;
h=0;
}
wall=instance_place(x,y+v*spd,obj_wall);
if(wall != noone){
y=wall.y-v*32;
v=0;
}
wall=instance_place(x+h*spd,y+v*spd,obj_wall);
if(wall != noone){
if(h!=0 && v!=0){
h=0;
v=0;
}
}
//***移动
if(h!=0&&v!=0){
x+=h*dspd;
y+=v*dspd;
}else{
x+=h*spd;
y+=v*spd;
}




,贴墙的效果,不知道是否是你需要的