Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: matiascarpello en Febrero 19, 2015, 09:05:21 PM

Título: Ayuda con Draw Gui y Sprite
Publicado por: matiascarpello en Febrero 19, 2015, 09:05:21 PM
Hola gente. Quisiera saber como puedo resolver lo siguiente. En mi juego, tengo la variable global.energia, que lo que hace es controlar la energía de mi personaje. Si global.energia=3 mi personaje tiene 3 corazones, si global.energia=2 tiene dos corazones, si global.energia=0 el nivel se reinicia.

Si mi personaje colisiona con un enemigo, este resta -1 de la variable global.energia.

Hasta ahí todo bien, pero lo que quisiera hacer es dentro del evento Draw Gui, se dibuje el sprite dependiendo de la global.energia. Si global.energia=3 se dibujara un sprite con 3 corazones, si global.energia=2 se dibujara un sprite con dos corazones y así sucesivamente.

Entonces dentro del evento Draw Gui puse este código:

if global.energia=3
{
draw_sprite(spr_hud,3)
}

if global.energia=2
{
draw_sprite(spr_hud,2,)
}

if global.energia=1
{
draw_sprite(spr_hud,1,)
}

if global.energia=0
{
draw_sprite(spr_hud,0,)
}


El tema es que al colisionar con un enemigo, el HUD o sprite desaparece.

Tengo que utilizar si o si Draw Gui porque mi juego tiene una view que permite hacer zoom al personaje y por lo tanto, el sprite con los corazones de vida, se vería afectado por el zoom, en cambio en el Draw Gui me quedo tranquilo que se que siempre va a estar en la misma posición si importar cuando modifique la view.
Título: Re:Ayuda con Draw Gui y Sprite
Publicado por: TLT96 en Febrero 19, 2015, 09:48:28 PM
Ok para comenzar en serio estas utilizando ese mismo code?
draw_sprite(spr_hud,3)
Le falta la x & y

Bueno antes de lo que te voy a hacer te hare una pregunta.... puedes ver el Hud al principio? cuando tienes toda la vida? cuando es equal to 3?

Si la respuesta es no pues agregale las coordenadas x & y

Si la respuesta es si esto es lo que me llegue a imaginar:
No tienes una variable que te de inmunidad o un timer para que el enemigo no se exite.... Si entiendes, bien, si no, me refiero a que si colisionas con el enemigo te quitara una vida, bien.... es lo que deseas no? pues en menos de un segundo te quitara otra, seguida de otra... y como no tienes nada que la dibuje al ser menor de 0 simplemente desaparece...

Solucion? prueba agregarle un timer, ve al create event de el personaje:
TIMER=0

En step event
if TIMER>=1 TIMER-=1

En el colision event con el enemigo
if TIMER=0
{TIMER=10 global.energia-=1}


Si es muy rapido cambia el 10 por algo mas alto como.... 100?
Título: Re:Ayuda con Draw Gui y Sprite
Publicado por: penumbra en Febrero 19, 2015, 09:51:57 PM
En lugar de usar 4 ifs, se puede usar un ciclo for para dibujar los corazones, según el valor de la energía. Yo también pienso que lo que puede estar pasando es que la resta de energía la estás haciendo en un evento de colisión, y mientras haya colisión, la variable energía va a disminuír una y otra vez en cada paso.
Título: Re:Ayuda con Draw Gui y Sprite
Publicado por: TLT96 en Febrero 20, 2015, 03:00:37 AM
Cita de: penumbra en Febrero 19, 2015, 09:51:57 PM
En lugar de usar 4 ifs, se puede usar un ciclo for para dibujar los corazones, según el valor de la energía. Yo también pienso que lo que puede estar pasando es que la resta de energía la estás haciendo en un evento de colisión, y mientras haya colisión, la variable energía va a disminuír una y otra vez en cada paso.

No lo confundas con los ciclos xD, cuando deba aprender lo hara (En cosas mas grandes), de momento puede hacer esto:
draw_sprite(spr_hud,global.energia,)

Seria lo mismo.... Aunque de decir esto quizas tambien lo confunda o.O
Esperemos mejor a que el responda... mientras dare este tip:

En caso de que tu vida sean varios sprites iguales, como es el caso de Zelda
(http://199.101.98.242/media/shots/56074-Legend_of_Zelda,_The_(USA)-4.png)

Te conviene hacerlo por ciclos, ademas asi sera mejor por que lo podras expandir facilmente (Sin necesidad de mas sprites)

En caso de que tu vida sean varios dibujos raros, ejemplo
(https://lh6.ggpht.com/ai5eSYpbjHXS5mufsZoxpr78GXkcqLPdT5VfZlrofWKZAA73G6sz07l2OpIARTDmCSE=w170)

Mira ese corazoncito, imaginatelo cortado en cuatro partes.... Pues asi es mejor el metodo que deje arriba (De utilizar image_index equivalente a la vida)