Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: FRostri en Febrero 16, 2019, 05:12:54 AM

Título: El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: FRostri en Febrero 16, 2019, 05:12:54 AM
Buenos Días, tardes y noches, Tengo un problema, yo quería hacer que mi personaje corriera así que escribí el código "if keyboard_check(vk_shift)
{y = y+4; image_speed = 0.3;}" y poz para hacer que pare puse este código "if keyboard_check(vk_nokey) {image_speed = 0; image_index = 0; speed = 0;}" y poz yo supuse que el sprite iba a para de moverse, pero el caso es que mientras no deje de presionar el shift no se deja de mover el sprite, pero yo quisiera que se deje de mover cuando debas de presionar la tecla de moverse. Y eso es todo, espero que hayan entendido y que alguien me pueda ayudar
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: getnoff en Febrero 16, 2019, 12:42:40 PM
Está algo confuso el planteo que haces con tu título y lo que describes.

Primero el evento nokey significa que se activará cuando no haya ninguna tecla pulsada, entonces lógicamente el personaje y su sprite no se detendrá hasta soltar shift (y cualquier otra), así que para estas cosas no es buena idea usar nokey.
¿Exactamente cómo deseas que funcione el correr del personaje? porque en general siempre queremos que siga moviéndose mientras tenemos presionada la tecla para andar. No me queda claro cual es la circunstancia que buscas para que deje de moverse ¿choca contra una pared? ¿tienes que presionar hacia una dirección para que corra hacia allí? ¿quieres que se mueva 4 pixeles hacia abajo sólo una vez, hasta volver a presionar shift?
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: FRostri en Febrero 16, 2019, 05:30:19 PM
Primero, perdón por hacer tan confuso este post y respecto a lo q quiero, pues quiero hacer que el personaje corra con las teclas de moverse obvio pero que sea mientras presiono la tecla shift, y que después de presionar la tecla de moverse que se deje de mover el sprite.
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: Johann en Febrero 16, 2019, 05:46:08 PM
Hola,
Has puesto un icono de sprite al post pero lo que preguntas no es sobre sprites si no sobre el codigo, asi que mejor pon el icono de la versión de GM que estas utilizando.
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: FRostri en Febrero 16, 2019, 06:03:13 PM
Gracias, lo tendré en cuenta para otra ocación
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: getnoff en Febrero 17, 2019, 01:59:01 AM
Ahora sí creo que entiendo mejor el problema.

Necesitas una forma de detectar que el personaje está en estado de movimiento para que se active la animación de correr, hay varios métodos pero yo el que te recomiendo es que crees una variable que indique cuando nos estamos moviendo:

En el evento create del personaje crea una variable llamada moviendo
[gml]
moviendo = 0;
[/gml]

y en el evento step pones lo siguiente (hice un pequeño ejemplo):
[gml]
moviendo = 0; //por defecto no se está moviendo si no hay ninguna tecla presionada

//Direcciones de movimiento-------------------------
if keyboard_check(vk_left)
{
    x -=5;
    if keyboard_check(vk_shift)
    {
        x -=8;
    }
    moviendo = 1; //ahora sí se está moviendo
}
if keyboard_check(vk_right)
{
    x +=5;
    if keyboard_check(vk_shift)
    {
        x +=8;
    }
    moviendo = 1; //igual
}
if keyboard_check(vk_up)
{
    y -=5;
    if keyboard_check(vk_shift)
    {
        y -=8;
    }
    moviendo = 1; //igual
}
if keyboard_check(vk_down)
{
    y +=5;
    if keyboard_check(vk_shift)
    {
        y +=8;
    }
    moviendo = 1; //igual
}


//Animación al correr-------------------------------
if keyboard_check(vk_shift) and moviendo == 1 //si se presiona shift y está en estado moverse
{
    image_speed = 0.3;
}
else //sino
{
    image_speed = 0; //sprite quieto
    image_index = 0; //opcionalmente volverá al sprite 0 cuando pare la animación
}
[/gml]

Y por las dudas te adjunto el ejemplo que yo mismo hice aquí en el post para que veas como funciona.
Título: Re:El sprite no se deja de mover hasta que no suelte la tecla
Publicado por: FRostri en Febrero 17, 2019, 11:23:46 PM
En verdad muchas gracias, y perdón por las molestias