como hago para hacer que una linea de código se ejecute una vez sola,por que quiero hacer un sistema de salton en :GM8: y siempre se ejecuta mas de 1 vez aqui les dejo el código:
vecesSalto =+1
if vecesSalto <=1 vspeed =-10
if place_free(x,y+1) vecesSalto =-1
Alguien tiene alguna solucion?
Hola Binario YT
Asumo que ese código está en step, en ese caso, usa la función "keyboard_check_pressed" en vez de "keyboard_check", así sólo detectas la primera pulsación de la tecla
Ej:
if keyboard_check_pressed(vk_space)
&& place_meeting(x,y+1,obj_suelo) {
Ejecuta el salto acá
}
Saludos
En realidad esta en el evento keyboard chek
vecesSalto = vecesSalto+1
if vecesSalto <=1 vspeed =-10
if place_free(x,y+1) vecesSalto = vecesSalto-1
Pues cambia el evento en keyboard check pressed xd
Me equivoque al escribir el problema,lo que sucede es que el salto se ejecuta en el aire en :GM8: lo siento :'(
En ese caso revisa que estés tocando el suelo antes de cambiar la vspeed con la función:
if place_meeting(x, y+1, obj_suelo)
Reemplaza "obj_suelo" por el objeto que uses de muro.
Saludos
Si tu suelo es solido tambien sirve if !place_free(x,y+1)
Hola a todos me encantaron sus respuestas son maravillosas.
El salto en plataformas presenta muchos obstáculos.
1. Al caer no debe trabarse en el suelo
2. Al saltar no debe trabarse con el techo. (esto es muy importante)
3. Al saltar debe tocar el techo y al caer debe tocar el suelo. Según la precisión que se requiera. (habeces se requiere que la distancia con el techo se disminuya a cero). Esto es precisión.
4.Si el player tiene un bloque en la cabeza o está entrando en un lugar muy pequeño, no debe saltar.
5. Al estar en el aire no debe volver a saltar según el caso, a menos que quieras hacer un double jum tipo castlevania circle of moon
(https://image.ibb.co/nibq9f/double-jump.png) (https://imgbb.com/)
El código para saltar , caer bien y no trabarse en el techo es este:
[EVENT CREATE]:
b2=0; s=0;
[EVENTO STEP] Y/O [DRAW] según el caso.
////version 1 movimiento vertical con gravedad y salto
//requiere en el [EVENT CREATE]: b2=0; s=0;
//movimiento vertical con salto.
b2p=(b2=0)*keyboard_check(38)
b2=keyboard_check(38)
if(b2p*(s=0)*place_meeting(x,y+10,object1))s=20
if(s)s-=1+place_meeting(x,y-1,object1)*2
if(s<0)s=0
vs=10-s
while(place_meeting(x,y+vs,object1))vs-=1*sign(vs)
y+=vs
compatibilidad: (https://image.ibb.co/dSScN0/compatibilidad.png) (https://imgbb.com/)
modo de uso:
en vs=10-s cambias el numero 10 por la gravedad que se requiera.
en if(b2p*(s=0)*place_meeting(x,y+10,object1))s=20 cambias s=20 por el valor que le quieras dar al salto
Ahora, pues existe otra dificultad. Supongamos que quieres crear una plataforma con colinas e inclinaciones como mario bros 3:
(https://image.ibb.co/c7eSpf/colina.png) (https://imgbb.com/)
Pues vas a necesitar otro código si quieres que las coliciones sean precisas, para esto se requiere una combinación de codigos donde según el estado del jugador se decide que código usar.