Diciembre 22, 2015, 03:41:49 AM Ultima modificación: Diciembre 22, 2015, 03:54:43 AM por cesar561
Hola de nuevo, verán en mi juego quiero que mi personaje dispare de forma alternada con cada brazo.
Es decir, una vez que se presiona la tecla vk_space dispara con el brazo izquierdo y enseguida brazo derecho... y así constantemente. En mi código esto funciona muy bien mediante funciones sprite_index para llamar cada animación y una variable condicional shoot. El problema viene cuando utilizo fisicas ya que todo esto anterior solamente funciona cuando el personaje brinca y no cuando se encuentra estático (vspd = 0). Agradeceré cualquier ayuda para localizar el error o mejorar mi código muchas gracias. Espero haberme explicado bien. :-[

//Create
vspd = 0;
grav = 1;
jspd = 19;
shoot = 1;

//Step
var skey = keyboard_check_pressed(vk_space);
var jkey = keyboard_check(vk_up);


//Disparos alternados
if(shoot > 0){

    if(skey){
        sprite_index= spr_left_shoot;
    }
    if keyboard_check_released(vk_space){
        sprite_index = spr_body;
        shoot = 0;
    }   
   
}
else{
   if(skey){
        sprite_index= spr_right_shoot;
    }
    if keyboard_check_released(vk_space){
        sprite_index = spr_body;
        shoot = 1;
    }

}

//Fisicas
if (place_meeting(x, y+1, obj_solid)) {
    vspd = 0;
    //sprite_index = spr_body;
   
    // Salto
    if(jkey){
        vspd = -jspd;
        sprite_index = spr_jump;
    }
    if keyboard_check_released(jkey){
        sprite_index = spr_body;
    }
     
} else {
    // Gravedad
    if (vspd < 10) {
        vspd += grav;
         
    }
}

// Colisión vertical
if (place_meeting(x, y+vspd, obj_solid)) {
    while (!place_meeting(x, y+sign(vspd), obj_solid)) {
        y+= sign(vspd);
    }
    vspd = 0;
}

// Movimiento vertical
y += vspd;

Cambia el código de disparos alternados por algo como esto
[gml]
//Disparos alternados
if( skey )
{
    if( shoot ) sprite_index = spr_left_shoot;
    else sprite_index = spr_right_shoot;
}

if keyboard_check_released(vk_space)
{
    sprite_index = spr_body;
    shoot = not shoot;
}
[/gml]

Gracias pero funciona de la misma manera, solamente cuando el personaje brinca y no cuando esta estatico vspd = 0