:( llevo horas intentando hacer ese .... movimiento y simplemente no me sale   lo intente con place_snapped pero se pasa si le pongo mucha velocidad ¿me ayudan :3 :-[ :GMS:?

Hola AgeX_005

Puedes lograr un movimiento en grid de 2 formas.

1- Con Alarma (pienso que es el más fácil). Va a depender del tamaño de tu grid.
Imaginemos que tu grid mide 16 pixeles. Cada vez que das un paso, tienes que cuadrar la velocidad con el tiempo, o sea que setea una velocidad de 2 pixeles y le das una alarma de 8 steps.
Entonces cuando la alarma termine te habrás movido 2*8 = 16 pixeles.
if alarm[0] = -1 {
if keyboard_check_pressed(la tecla de dirección aquí) { hspeed (o vspeed según corresponda) = 2 (o -2); alarm[0] = 8 }
else if keyboard_check_pressed(otra dirección) { lo mismo }
repite lo mismo para las otras direcciones.
}


En la alarma setea la speed a cero y listo.
speed = 0

2- Puedes conseguir este efecto si usas unas coordenadas de destino y una velocidad.
Para que funcione debes tener creada una variable que guarde la coordenada X e Y de hacia donde te quieres mover.
Creation code:
x_destino = x
y_destino = y
velocidad = 2


En el step event te mueves asignando una futura ubicación.
if x_destino = x && y_destino = y {
if keyboard_check_pressed(la tecla de dirección aquí) { x_destino = x-16 //+16 para derecha, -16 para ir a la izquierda (o y_destino = y-16 o y+16); }
else if keyboard_check_pressed(otra dirección) {}
repite lo mismo para las otras direcciones.
}


Luego, en el STEP al final de ese mismo bloque de código (o en END STEP si prefieres)
Haces al personaje caminar
if x_destino != x { if abs(x_destino-x) = velocidad { x = x_destino }; else { x += sign(x_destino - x)*velocidad } }
y_destino != y { if abs(y_destino-y) = velocidad { y = y_destino }; else { y += sign(y_destino - y)*velocidad } }


Puedes elegir cualquiera de los 2 métodos, pero NO ambos al mismo tiempo.

Saludos