Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: vitail en Abril 17, 2015, 07:45:13 PM

Título: Salto como super mario
Publicado por: vitail en Abril 17, 2015, 07:45:13 PM
quiero hacer un salto como super mario de que si mantienes el boton de salto apretado sube hasta lo que mas puede y si en el curso de el salto manteniendo apretado la tecla de salto que baje. Este es mi codigo de plataformas

create
//Plataformas base

hsp = 0;
vsp = 0;
movespd = 6;
jumpspd = 6;
grav = 0.3;
grounded = false;
jump_movespd = movespd;


step
///Player Logic
//Platform Base Script
//Variables
var rkey = keyboard_check(vk_right); // Right Key
var lkey = keyboard_check(vk_left); // Left Key
var jkey = keyboard_check(vk_up); //Jump Key
var skey = keyboard_check(ord("Z")); // Shoot Key
//Gravedad y salto.
if(place_meeting(x,y+1,obj_wall)){
    vsp = 0;
    grounded = true;
    if(jkey){
        vsp = -jumpspd;
    }
} else {  // Y si no toca el suelo
    sprite_index = spr_player_jump;
    grounded = false;
    if(vsp < 10){
        vsp += grav;
    }
}
//Movimientos horizontales
if(rkey){
    image_xscale = 1;
    if(hsp < movespd){
        hsp ++;
    }
}
if(lkey){
    image_xscale = -1
    if(hsp > -movespd){
        hsp --;
    }
}
//Si no toco ningun movimiento hor.
if(!lkey && !rkey){
    if(hsp > 0){
        hsp --;
    } else if(hsp < 0){
        hsp ++;
    }
}
//Colisiones Horizontales
if(place_meeting(x+hsp,y,obj_wall)){
    while(!place_meeting(x+sign(hsp),y,obj_wall)){
        x += sign(hsp);
    }
    hsp = 0;
}
x += hsp;
//Colisiones Verticales
if(place_meeting(x,y+vsp,obj_wall)){
    while(!place_meeting(x,y+sign(vsp),obj_wall)){
        y += sign(vsp);
    }
    vsp = 0;
}
y += vsp
Título: Re:Salto como super mario
Publicado por: vitail en Abril 18, 2015, 06:47:34 PM
creo que se llama variable jump height.
Título: Re:Salto como super mario
Publicado por: Clamud en Abril 18, 2015, 06:55:45 PM
Puedes agregar esta línea de código
[gml]
if( keyboard_check_released(vk_up) and vsp<0 ) vsp /= 2;
[/gml]
Título: Re:Salto como super mario
Publicado por: vitail en Abril 18, 2015, 08:18:17 PM
Cita de: Clamud en Abril 18, 2015, 06:55:45 PM
Puedes agregar esta línea de código
[gml]
if( keyboard_check_released(vk_up) and vsp<0 ) vsp /= 2;
[/gml]

me puedes explicar que hace mas o menos?
Título: Re:Salto como super mario
Publicado por: quiero aprender en Abril 18, 2015, 08:31:32 PM
Yo lo que entiendo mas o menos no se si estoy bien pero bueno.  :D

significa que si dejas de apretar le tecla up chequea una variable que en este caso es vsp dice que si la variable vspe es meno a cero di dividirá la variable entre 2 que es lo que hace eso nose pero por lo que veo es eso.
Título: Re:Salto como super mario
Publicado por: vitail en Abril 18, 2015, 09:26:54 PM
Cita de: quiero aprender en Abril 18, 2015, 08:31:32 PM
Yo lo que entiendo mas o menos no se si estoy bien pero bueno.  :D

significa que si dejas de apretar le tecla up chequea una variable que en este caso es vsp dice que si la variable vspe es meno a cero di dividirá la variable entre 2 que es lo que hace eso nose pero por lo que veo es eso.

si, yo tambien entiendo eso pero no entiendo muy bien.
Título: Re:Salto como super mario
Publicado por: Clamud en Abril 19, 2015, 04:53:53 AM
Al soltar la tecla de salto (vk_up) si vsp (vertical speed) es menor a cero, es decir, que se mueve hacia arriba, la velocidad se reduce a la mitad, por lo que el personaje subirá menos y el cambio de velocidad no es muy brusco.