Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: movimiento tipo pokemon  (Leído 497 veces)

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

Desconectado AgeX_005

  • Habitual
  • *
  • Puntos: 23
  • Mensajes: 10
    • Ver Perfil
en: Diciembre 13, 2019, 01:27:59 am
 :( 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:?

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 en: Diciembre 13, 2019, 03:12:06 am
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.
Código: [Seleccionar]
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.
Código: [Seleccionar]
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:
Código: [Seleccionar]
x_destino = x
y_destino = y
velocidad = 2

En el step event te mueves asignando una futura ubicación.
Código: [Seleccionar]
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
Código: [Seleccionar]
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

 
Los siguientes usuarios dieron las gracias a este tema: AgeX_005