Febrero 26, 2014, 11:12:10 AM Ultima modificación: Febrero 26, 2014, 11:14:06 AM por jronis
Hola makeros, la duda que os planteo es la siguiente:

En un juego de plataformas el personaje principal se mueve, salta, dispara, hasta aquí todo bien. El problema me surge cuando tengo un sprite de acción con varias subimagenes. Me explico mejor con algo de código.



//acción para que el personaje dispare

if (keyboard_check_pressed(vk_space)){

sprite_index = spr_AccionDisparo; //este sprite contiene 6 subimagenes
image_index = 0;
image_speed = 1;
instance_create(x, y, obj_Disparo);

}



Lo que quiero hacer, es que al pulsar "ESPACIO" (una vez y sin tener que mantener la tecla pulsada), se cargue el sprite "spr_AccionDisparo" y recorra todas las subimagenes, y una vez que haya llegado a la última se detenga hasta que nuevamente pulse "ESPACIO".

Ahora mismo lo que me hace es, recorrer las imagenes mientras tenga la tecla pulsada, (es decir si suelto la tecla se corta) y además se repite en un bucle infinito.

Gracias de antemano
José R. Onís


Le estás diciendo que te muestre sólo la primera subimagen (0), prueba con image_index=-1;

saludos
Fan de los retro-juegos 2D, arcades, plataformas. Programador. Amiga and MSX fan

Gracias ya he probado también con -1 y tampoco funciona correctamente
José R. Onís

pues en teoria deberia funcionar con -1, prueba a ponerle una alarma de 5 steps por ejemplo, cuando pulsas space que cambien al sprite que quieres se mantenga durante 5 pasos por ej y luego vuelva a su sprite normal. a lo mejor no le da tiempo a mostrar todas las imagenes

Concuerdo con abramelin, lo que tenés que hacer es algo como esto:


//acción para que el personaje dispare

if (keyboard_check_pressed(vk_space)){

sprite_index = spr_AccionDisparo; //este sprite contiene 6 subimagenes
image_index = 0;
image_speed = 1;
instance_create(x, y, obj_Disparo);

if (alarm[0] < 0) {   // Con esto hacemos que si o si se ejecute la alarma.
   alarm[0] = 10;
}

}


En el evento Alarm[0]:


objPj.sprite_index = spr_comun_de_tu_pj;
objPj.image_index = 0;
objPj.image_speed = 0;


Donde dice "objPj" poné el nombre del objeto de tu personaje y donde dice "spr_comun_de_tu_pj" poné el nombre del sprite que usas para cuando no hace nada.

Si ves que al presionar la barra espaciadora no se completa la animación de disparo, andá cambiándole los step de la alarma.

Perfecto muchisimas gracias amigos
José R. Onís