:GMS:
Yo hice la comprobación de esta forma:
para hacer que se moviera en cuadrícula, pero lo hice con cada botón de movimiento, me gustaría simplificarlo todo en un bloque de código de gml.

Hola

Experimenta con esto: Crea un proyecto nuevo, creale un objeto y en un evento draw o dibujo colocale este código.

//simulando el evento create con la variable score
repeat(!score)
{
cuadricula_ancho=32
cuadricula_alto=32
columnas_totales=floor(room_width/cuadricula_ancho)
filas_totales=floor(room_height/cuadricula_alto)
x2=0
y2=0
score=1
}

//botones
if(keyboard_check(113)){game_restart()}
b1=keyboard_check(vk_left)
b2=keyboard_check(vk_up)
b3=keyboard_check(vk_right)
b4=keyboard_check(vk_down)

x2+=(b3-b1)*5
y2+=(b4-b2)*5

if(x2<0){x2=0}
if(x2>room_width-cuadricula_ancho*6){x2=room_width-cuadricula_ancho*6}
if(y2<0){y2=0}
if(y2>room_height-cuadricula_alto*9){y2=room_height-cuadricula_alto*9}

x=floor(x2/columnas_totales)*cuadricula_ancho
y=floor(y2/filas_totales)*cuadricula_alto

//dibujo
draw_rectangle(x,y,x+cuadricula_ancho,y+cuadricula_alto)
dy=0

texto=x2
draw_text(0,dy,texto)
dy+=12



Puedes modificar las variables cuadricula_ancho y cuadricula_alto.
Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.



Cita de: dixon en Abril 08, 2020, 07:56:20 PM
Hola

Experimenta con esto: Crea un proyecto nuevo, creale un objeto y en un evento draw o dibujo colocale este código.

//simulando el evento create con la variable score
repeat(!score)
{
cuadricula_ancho=32
cuadricula_alto=32
columnas_totales=floor(room_width/cuadricula_ancho)
filas_totales=floor(room_height/cuadricula_alto)
x2=0
y2=0
score=1
}

//botones
if(keyboard_check(113)){game_restart()}
b1=keyboard_check(vk_left)
b2=keyboard_check(vk_up)
b3=keyboard_check(vk_right)
b4=keyboard_check(vk_down)

x2+=(b3-b1)*5
y2+=(b4-b2)*5

if(x2<0){x2=0}
if(x2>room_width-cuadricula_ancho*6){x2=room_width-cuadricula_ancho*6}
if(y2<0){y2=0}
if(y2>room_height-cuadricula_alto*9){y2=room_height-cuadricula_alto*9}

x=floor(x2/columnas_totales)*cuadricula_ancho
y=floor(y2/filas_totales)*cuadricula_alto

//dibujo
draw_rectangle(x,y,x+cuadricula_ancho,y+cuadricula_alto)
dy=0

texto=x2
draw_text(0,dy,texto)
dy+=12



Puedes modificar las variables cuadricula_ancho y cuadricula_alto.

Game Maker tiene la función snap_grid(x, y), pasándole entre paréntesis los valores de ancho y alto de la cuadrícula, la función revisa si la instancia está en la cuadrícula o no, y devuelve 1 si lo esta, y 0 si no lo está.