Buenas a todos, mi pregunta hoy es la siguiente, veran tengo este script de movimiento
///Moverse
key_left = keyboard_check(vk_left)
key_right = keyboard_check(vk_right)


if place_free(x,y+1)
{
gravity = 0.7
gravity_direction = 270
}
else
{
gravity=0
gravity_direction = 270
}
//the arrow keys<,>,^ 
if place_free(x-4,y)and key_left {
x-=4
image_speed = 0.5
image_xscale = -1
}
if place_free(x+4,y)and key_right {
x+=4
image_speed = 0.5
image_xscale = 1
}

Y mi pregunta es, ¿como puedo agregarle el doble salto a el script?
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto

Puedes agregar una variable salto igual a 0 en el evento de creación, entonces cada vez que el jugador salte incrementas ésta variable, y la vuelves a 0 cuando llegue al suelo.

Además en el evento step al presionar la tecla correspondiente al salto deberás revisar si la variable "salto" es menor a 2 o a la cantidad de veces que quieres que el personaje salte. También te recomendaría que uses las variables predeterminadas "hspeed" y "vspeed" para el movimiento.

Create Event


salto=0;
image_speed= 0.5;
gravity_direction= 270;



Step Event


///Moverse
key_left = keyboard_check(vk_left);
key_right = keyboard_check(vk_right);
key_up = keyboard_check_pressed(vk_space);

if place_free(x,y+1){
    gravity = 0.7;
    }else{
        salto=0;
        vspeed=0;
        gravity=0;
        }

//the arrow keys<,>,^

if (place_free(x-4,y) and key_left) {
    x-=4;
    image_xscale = -1;
    }

if (place_free(x+4,y) and key_right) {
    x+=4;
    image_xscale = 1;
    }

if (salto<2 and key_up) {
    vspeed=-10;
    salto++;
    }



Te recomendaría usar un método alternativo para detectar las colisiones, con el código actual no me sorprendería que el personaje se quede atrapado dentro de algún objecto sólido sin poder moverse. Saludos

Gracias Torrencypower probare tu código y dire si funciona bien, y si, se que debo mejorar las colisiones gracias por el detalle.
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto

buenas, no me funciono el código del dooble salto, y recordando ahora yo habia usado uno similar antes y no funciono,  :-[ no tiene alguien algún metodo alternativo de hacerlo?
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto

Que raro, lo probé y funcionaba, cuál es el problema que tienes cuándo intentas saltar?

El problema es que solamente salta una vez, y luego de que salto y cae y vuelvo a presionar la tecla salta, pero a partir de la 3° vez no salta.
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto

Jajaja, el problema lo tienes es que no reinicias la variable al tocar el suelo y que el doble salto no suma mientras no toca el suelo si no entiendes pues es algo como:

if place_meeting(x,y+1,obj_suelo) {

Jajaja, el problema lo tienes es que no reinicias la variable al tocar el suelo y que el doble salto no suma mientras no toca el suelo si no entiendes pues es algo como:

if !place_meeting(x,y+1,obj_suelo) {
if keyboard_check(vk_up) {
  salto++
  vspeed-=8
}
}
else {
if place_meeting(x,y+1,obj_suelo) {
  salto=0
}

Si te ayudo coloca un Solucionado a tu pregunta suerte!  ;) ;) ;) ;)
disculpa que no acomplete la respuesta anterior pero aki esta completa.

gracias a todos, si logre solucionarlo, tuve que hacer cambios drasticos en el código pero gracias a las respuestas me dieron buenas ideas no solo para el doble salto sino tambien en otras cosas, gracias.
"El objetivo claro de los videojuegos es entretener"


Shigeru Miyamoto