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: Implementar double tap  (Leído 559 veces)

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

Desconectado FernandoNavarro

en: Enero 15, 2020, 12:45:44 am
Hola buenas, hace unos meses pregunté como implementar una función de double tap para ejecutar una acción como pasar de caminar a correr. El asunto es que al ser un juego tipo rpg usa las cuatro direcciones, y por lo tanto al presionar una tecla una sola vez y luego otra rápidamente, cambia el estado a correr. Así es que mi pregunta es la siguiente:

¿Qué es mejor? ¿Usar cuatro variables iguales o un arreglo?

Hasta el momento usaba algo tipo:

///Create
intCounterL = 0;
intCounterR = 0;
intCounterU = 0;
intCounterD = 0;

///Step
if (keyboard_check_released(vk_left))
{
    intCounterL = 1;
    alarm[0] = 0.2;
}

if (intCounterL == 1 and keyboard_check(vk_left))
{
    intCounterL = 2;
}

///Alarm 0
if (intCounterL == 2 and intMoveX < 0) bolCanRun = 1;
else
{
    bolCanRun = 0;
    intCounter = 0;
}

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado BssString

Respuesta #1 en: Enero 15, 2020, 12:53:45 am
Hola FernandoNavarro

Mi sugerencia es que uses una tecla diferente para correr distinta a la de las 4 direcciones, en algunos juegos de play se corría con la "X" y te movías con el JoyStick.

Saludos

 


Desconectado FernandoNavarro

Respuesta #2 en: Enero 15, 2020, 01:00:42 am
BssString, también lo intenté, pero al ser un remake, quiero mantener la mecánica original.

Edit: Al final opté por usar las cuatro variables hermanas.
« última modificación: Enero 15, 2020, 05:21:52 am por FernandoNavarro »

 


Desconectado BssString

Respuesta #3 en: Enero 17, 2020, 03:14:45 am
Hola FernandoNavarro

Perfecto xD
No sé en qué momento asignas la variable "bolCanRun" para poder correr, sólo veo el "intCounterL = 2" pero eso no activa la alarma para activar el bolCanRun, quizás está un poco incompleto el código. Además 0.2 Steps de tiempo es casi NADA a menos que hayas cambiado la room_speed a una más lenta. Te sugiero dar 2 o 3 Steps de gap por lo menos.

Lo otro, es que como son variables separadas, cuando sueltes la tecla derecha para cambiar a la izquierda, el personaje dejaría de correr.
Eso sería una molestia para el jugador a la larga.

Como sugerencia, cuando vas corriendo y sueltas la tecla derecha, creale un delay de un par de Steps para que el jugador tenga tiempo de soltar la tecla y luego pulse Izquierda, sigas corriendo sin apretar el Doble Tap de nuevo.
Puedes aprovechar incluso el mismo delay de la alarma en el keyboard_check.

Código: [Seleccionar]
if ( (intCounterL == 1 or bolCanRun = 1 ) and keyboard_check(vk_left))
{
    intCounterL = 2;
}
Esa nueva condición del "bolCanRun" hará que cuando pulses la tecla izquierda y ya estabas corriendo de antes en cualquiera de las 4 direcciones, sigas corriendo ahora hacia la izquierda.

Saludos

 


Desconectado FernandoNavarro

Respuesta #4 en: Enero 17, 2020, 04:25:07 am
Lo del tiempo es porque tardaba mucho en pasar de un estado a otro, pero justo hace un momento mientras comía se me ocurrió incrementar el contador en la alarma y en el evento step activar y desactivar la booleana, así logro un efecto más instantáneo.