Creo que el problema puede estar en la primera parte, no lo se, pero prueba en la primera parte poniendo las variables de image entre llaves
[gml]
if (keyboard_check_pressed(vk_space) && global.puede_disparar == true)
{
sprite_index = spr_disparo_der;
image_index = 0;
image_speed = 0.4;
}
[/gml]
Si no pones entre llaves las variables que quieres que se ejecuten, entonces solo se ejecutara la primera que esta despues de la condicion y las demas seran ignoradas, por eso es importante que las pongas entre llaves
[gml]
if (keyboard_check_pressed(vk_space) && global.puede_disparar == true)
{
sprite_index = spr_disparo_der;
image_index = 0;
image_speed = 0.4;
}
[/gml]
Si no pones entre llaves las variables que quieres que se ejecuten, entonces solo se ejecutara la primera que esta despues de la condicion y las demas seran ignoradas, por eso es importante que las pongas entre llaves