Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: fatalfury en Enero 14, 2013, 03:46:29 AM

Título: ¿Limitar el numero de saltos de un sprite?
Publicado por: fatalfury en Enero 14, 2013, 03:46:29 AM
Bueno muchachos, he estado 2 dias intentando sacar un codigo para hacer que un personaje al oprimir la letra w (espero luego que esta se reemplace por un argumento XD) el personaje salte, y cuando aun este en el aire al oprimirla otravez, de un doble salto, tipo super smash brothers.

Lo he logrado pero no solo da 2 saltos sino que da un salto cada vez que se oprme la tecla, porque no se como detenerlo, intente con contadores, true false, y todo eso


He hecho una cantidad de codigos pero este es el mas decente:



place_free(x,y+1)
vspeeed=-8

if keyboard_check_pressed(ord('W'))
salto2=true

{
salto2=
vspeed=vspeed + 8
if keyboard_check_pressed(ord('W'))
vspeed=-8
Título: Re:¿Limitar el numero de saltos de un sprite?
Publicado por: calio en Enero 14, 2013, 05:25:48 AM
acá hay una versión bastante rudimentaria del dble salto implementada con las variables que ya estás utilizando c:

//Primero, el código de la gravedad
if (place_free(x,y+1) == false)
{
gravity = 0;
//Si es que el objeto está en el piso y la variable salto no es 0...
if (salto != 0)
{
//...se le asigna el valor 0.
salto = 0;
}
}
else
{
gravity = 1;
//De lo contrario, si está en el aire y el valor de la variable es igual o menor a 0.
if (salto <= 0)
{
//...se le asigna el valor 1. Así evitamos que el jugador pueda dar más de un salto en el aire.
salto = 1;
}
}
if (keyboard_check_pressed(ord("W")) && (salto < 2))
{
//El código de abajo sólo se ejecuta si el valor de la variable salto es menor que 2, que es la cantidad máxima de saltos en el aire que el jugador puede dar.
if ((place_free(x,y+1) == false) && (salto == 0)) || ((place_free(x,y+1) == true))
{
//Si está en el piso y el valor de salto es 0, o bien si no lo está...
vspeed = -8;
salto += 1;
//...ejecutamos el salto.
}
}


Honestamente, no lo he probado, y lo programé acá mismo sin testearlo. Lo voy a probar y te hago un edit con una confirmación si es que funciona o con correcciones si es que no.

EDIT: Debería funcionar si ya tienes programado el evento de colisiones de tu objeto de jugador con el piso :)
Título: Re:¿Limitar el numero de saltos de un sprite?
Publicado por: fatalfury en Enero 16, 2013, 07:41:19 PM
no, sigue dando saltitos  :(, hombre no importa si tengo que poner codigo nuevo...gracias
Título: Re:¿Limitar el numero de saltos de un sprite?
Publicado por: fatalfury en Enero 16, 2013, 07:56:35 PM
bueno mi idea era dejar que el personaje salte, por ahora salta cada vez que oprimo la tecla, pero lo que quiero es que en el segundo salto ya no se pueda saltar mas con algo como un contador de saltos o si hay opcion de anular la tecla o algo asi
hay una mejor idea ??
Título: Re:¿Limitar el numero de saltos de un sprite?
Publicado por: penumbra en Enero 16, 2013, 09:50:29 PM
Citarvspeed=vspeed + 8

eso se puede escribir asi vspeed += 8. Además ojo,

INNo sé si funcione, pero se me ocurre esto (a grandes rasgos)

En CREATE, pones   salto = 2

EN STEP pones



if !(place_free(x,y+4))    // siempre que haya contacto con el piso, tienes dos 'cargas' para lograr tu salto
{salto = 2}            // Tu sprite debe tener el origen en los 'pies' o hasta abajo.

if (salto > 0)                   // Asegurarse que tengas 'cargas' o 'poder' para saltar
{

if !(place_free(x,y+4)) and keyboard_check_pressed(ord('W'))   //salto cuando se está en en el suelo
{
vspeed = -8
salto -= 1                      //Restar 1 al contador de salto, porque ya usaste un salto
}

if (place_free(x,y+4)) and keyboard_check_pressed(ord('W'))    //segundo salto cuando se está en el aire
{vspeed = -8
salto -= 1                           //Restar 1 al contador de salto, esto lo dejaría en 0 y no permitiría más saltos a menos que toquesel suelo nuevamente

}

}



NOTA1: No sé si funcione, fue una idea rápida, tienes que adaptarlo a tu código, meterle gravedad si quieres, etc.

NOTA2: ME da la impresión que puse muchos IF separados, pero así queda más clara la idea. Posiblemente se puede reducir el número de IF's agregando "else".
Título: Re:¿Limitar el numero de saltos de un sprite?
Publicado por: calio en Enero 17, 2013, 07:52:55 AM
Me pareció muy muy extraño que no te funcionase D: así que hice un ejemplo :)

Todo el código está comentado, así que puedes ignorar todas las partes referentes a mecánicas y físicas :D
Dado que estoy acostumbrado a trabajar así, mi código de plataformas no utiliza ni la variable gravity ni la variable vspeed, así que ten en cuenta eso al adaptar el código a tu caso :). De todos modos, insisto, TODO el código está comentado.

Ojalá ahora sí te sirva :D