Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DAMTZD en Mayo 03, 2013, 05:36:39 PM

Título: Aceleracion vertical y horizontal (Cerrado)
Publicado por: DAMTZD en Mayo 03, 2013, 05:36:39 PM
Buenas a todos, soy nuevo aqui y tambien usando el game maker, ya se usarlo un poco pero aun me falta jeje espero nos llevemos bien, bueno mi duda en la cual espero me puedan ayudar creo que les parecerá algo sencilla, estoy haciendo un juego de plataformas con vista de arriba, por ende mi personaje se mueve en 4 direcciones unicamente (aun no se como moverlo en diagonal al presionar up y right o down y left jaja) pero lo que quiero es que mi personaje al tener una velocidad de 4 al presionar "shift" cambie su velocidad a 10, y al dejar de presionar regrese a la normal que es 4, he intentado con variables, algunos codigos que he visto por ahi, pero no me han funcionado, ya que si presiono abajo y shift no pasa nada pero si presiono shift solo se mueve a la derecha con velocidad de 10, al personaje le pongo el evento de que al presionar shift haga eso, será otro evento? les agradesco de antemano n_n
Título: Re:Aceleracion vertical y horizontal
Publicado por: Silver_light en Mayo 03, 2013, 08:31:22 PM
Podrías utilizar una variable de velocidad, que se modificaría al presionar o no shift:
Por ejemplo, este código debería ir en el evento step:
[GML]
if (keyboard_check_pressed(vk_shift)) // si esta presionada la tecla de Shift, la velocidad es 10
   velocidad = 10;

if (keyboard_check_released(vk_shift)) // si se suelta la tecla de Shift la velocidad vuelve a 4
   velocidad = 4;
[/GML]

Entonces luego, la colocas en los movimientos del personaje, por ejemplo:
[GML]
hspeed = velocidad;
[/GML]
Entonces Hspeed variará de acuerdo si presionaste Shift o no.

Espero te ayude!
Título: Re:Aceleracion vertical y horizontal
Publicado por: DAMTZD en Mayo 03, 2013, 09:09:06 PM
Cita de: Silver_light en Mayo 03, 2013, 08:31:22 PM
Podrías utilizar una variable de velocidad, que se modificaría al presionar o no shift:
Por ejemplo, este código debería ir en el evento step:
[GML]
if (keyboard_check_pressed(vk_shift)) // si esta presionada la tecla de Shift, la velocidad es 10
   velocidad = 10;

if (keyboard_check_released(vk_shift)) // si se suelta la tecla de Shift la velocidad vuelve a 4
   velocidad = 4;
[/GML]

Entonces luego, la colocas en los movimientos del personaje, por ejemplo:
[GML]
hspeed = velocidad;
[/GML]
Entonces Hspeed variará de acuerdo si presionaste Shift o no.

Espero te ayude!

Gracias, lo puse en el evento step del personaje pero ahora al presionar shift acelera a 10 y si suelto shift avanza sin parar a 4, lo intente poner (el codigo) en cada uno de los movimientos, al presionar left, right, up and down, y no me funciono  :'( o será que entendi mal? jeje perdona como dije soy realmente nuevo en esto
Título: Re:Aceleracion vertical y horizontal
Publicado por: Karasuman en Mayo 03, 2013, 09:34:52 PM
Hola, creo que que esto te puede servir:

Cambia esto:

if (keyboard_check_released(vk_shift)) // si se suelta la tecla de Shift la velocidad vuelve a 4
   velocidad = 4;


Por esto otro:

if(keyboard_check_released(vk_shift)){ // si se suelta la tecla de Shift
    if(keyboard_check(vk_left) or keyboard_check(vk_right)){//Estas presionando la flecha izquierda o la flecha derecha?
        //Si estas presionando alguna de las dos flechas entonces entra aqui
        velocidad=4;
    }else{
        velocidad=0;
    }
}
Título: Re:Aceleracion vertical y horizontal
Publicado por: DAMTZD en Mayo 04, 2013, 12:17:04 AM
Cita de: Karasuman en Mayo 03, 2013, 09:34:52 PM
Hola, creo que que esto te puede servir:

Cambia esto:

if (keyboard_check_released(vk_shift)) // si se suelta la tecla de Shift la velocidad vuelve a 4
   velocidad = 4;


Por esto otro:

if(keyboard_check_released(vk_shift)){ // si se suelta la tecla de Shift
    if(keyboard_check(vk_left) or keyboard_check(vk_right)){//Estas presionando la flecha izquierda o la flecha derecha?
        //Si estas presionando alguna de las dos flechas entonces entra aqui
        velocidad=4;
    }else{
        velocidad=0;
    }
}


Hola, gracias por la ayuda, al cambiar eso deja de correr solo jaja, pero sigue siendo que al presionar shift va a la derecha y al soltarlo se detiene, se acerca a lo que busco jaja pero como hago para que al tiempo de presionar down y shift vaya hacia abajo con mayor velocidad, en mi caso velocidad 10, asi como right y shift, left, up aun no se como aunque con su ayuda me acerco n_n
Título: Re:Aceleracion vertical y horizontal
Publicado por: Silver_light en Mayo 04, 2013, 12:23:41 AM
Ah! resulta que la variable hspeed es una velocidad constante.
Si quieres que solo se mueva cuando presionas el botón de dirección, te recomiendo sumar o restar la coordenada x o y, dependiendo:
Entonces podrias utiliar mi codigo en el evento step:
[GML]
if (keyboard_check_pressed(vk_shift)) // si esta presionada la tecla de Shift, la velocidad es 10
   velocidad = 10;

if (keyboard_check_released(vk_shift)) // si se suelta la tecla de Shift la velocidad vuelve a 4
   velocidad = 4;
[/GML]

Y luego en el evento de keyboard right:

[GML]
repeat(velocidad) x += 1;
[/GML]
Eso hará que si presionas la flecha derecha, mientras mantienes la tecla de shift se moverá más rápido que si no presionas Shift.
Título: Re:Aceleracion vertical y horizontal
Publicado por: DAMTZD en Mayo 04, 2013, 08:30:14 AM
Gracias por su ayuda n_n no me sirvio del todo bien el codigo, me sigue avanzando solo, pero creo que poco a poco iré entendiendo mas el GM, de momento dejaré mi personaje con esa velocidad jaja, gracias de nuevo