Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: jronis en Febrero 26, 2014, 11:12:10 AM

Título: duda plataformas
Publicado por: jronis en Febrero 26, 2014, 11:12:10 AM
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
Título: Re:duda plataformas
Publicado por: shaq145 en Febrero 26, 2014, 11:47:21 AM

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

saludos
Título: Re:duda plataformas
Publicado por: jronis en Febrero 26, 2014, 01:28:08 PM
Gracias ya he probado también con -1 y tampoco funciona correctamente
Título: Re:duda plataformas
Publicado por: abramelin en Febrero 26, 2014, 02:53:45 PM
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
Título: Re:duda plataformas
Publicado por: Iros en Febrero 26, 2014, 04:03:13 PM
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.
Título: Re:duda plataformas
Publicado por: jronis en Febrero 26, 2014, 08:32:32 PM
Perfecto muchisimas gracias amigos