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