Pregunta: ¿Como puedo comprobar si el objeto esta alineada con el grid en gml?

Publicado por Antena, Abril 07, 2020, 12:35:05 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Antena

 :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.

dixon

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é.


kostra

[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

FernandoNavarro

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á.

Powered by EzPortal
SMF spam blocked by CleanTalk