Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





barra de vida

Iniciado por ignacio, 01 de Octubre de 2008, 01:54:49 PM

« anterior - próximo »

ignacio

Estoy desarrollando mi primer juego en c++ con allegro  es de naves y no se como hacer para que al chocar o a ser disparado se haga pequeña

AK47

Puedes crear una imagen del color que quieras, por ejemplo amarillo. A la hora de pintarlo lo "estiras" para que ocupe toda la barra en función de la energía que tiene la nave. Por ejemplo, si esta a tope de energía, la barra ocupa 200 pixeles, si esta por la mitad 100, y así con todo :)

Supongo que allegro te permitira "estirar" (llamado "scaling" en un lenguaje más técnico) los sprites que dibujas. Si te permite "tintar" los sprites, entonces puedes cambiar el color de la barra y todo en función de la energía :)

[EX3]

Tendras una variable contador donde tienes el nivel de energia de la nave, no? Esto te facilita que el mismo valor lo uses para controlar la vida que le queda a la nave y por otro lado utilizarlo para calcular la longitud de la barra de energia.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

TiRSO

#3
Yo normalmente prefiero la opción de dibujar la barra de vida con primitivas (rectángulos, círculos, etc...). En allegro concretamente, tienes la función rect que te dibuja un rectángulo. Lo único que tienes que hacer es dibujar un rectángulo y cambiar su tamaño según la vida que tenga la nave. Al hacerlo así, además, puedes cambiar el color de la barra según la vida que quede (color verde para cuando está a tope y rojo para cuando esté a punto de morir, por ejemplo).

Buffon

Cita de: [EX3] en 01 de Octubre de 2008, 03:28:36 PM
Tendras una variable contador donde tienes el nivel de energia de la nave, no? Esto te facilita que el mismo valor lo uses para controlar la vida que le queda a la nave y por otro lado utilizarlo para calcular la longitud de la barra de energia.

Salu2...

también tendrá un

#define MAX_LIFE 1000
#define MAX_LIFE_PIXELS 30

int actualLife = x;

por ejemplo con lo cuál el cálculo es sencillo en OpenGL.

(float)x/MAX_LIFE)*MAX_LIFE_PIXELS.

se entiende vamos xD

ignacio

Creo que voy a quitar el gráfico y poner un rectángulo encima de un gráfico para adornar.
A ver que tal sale.

Buffon

Cita de: ignacio en 02 de Octubre de 2008, 04:30:41 PM
Creo que voy a quitar el gráfico y poner un rectángulo encima de un gráfico para adornar.
A ver que tal sale.

Si la vida no se va a mover y siempre está en el mismo sitio, puedes poner una imagen fija roja en el lugar de la vida y pintar un rectangulo verde encima que hará un glScale con la formula que te he dicho, así pintas por encima el % de vida que le queda.

Si no está fija puedes hacer lo mismo sólo que pintando siempre una barra por detrás con Scale (1.0)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.