Buenas.
Quiero hacer una pequeña barra de energía de forma que aparecerá al 100% osea rellena y cada segundo va bajando de forma que al haber pasado 5 segundos se haya vaciado por completo.
¿Es necesario hacerme una secuencia con 5 gráficos?
En otros lenguajes como por ejemplo Action Script 3.0 se puede hacer "un truco" por llamarlo de alguna forma y es que podemos ir disminuyendo el ancho de una imagen; haciendo uso del truco anterior puedo tener una imagen que actuará con un marco exterior de la barra de energia y una segunda imagen superpuesta que será la que irá disminuyendo y de esta forma tendremos la secuencia sin tener que tener tantas imágenes.
Me refiero a tantas imágenes porque si en vez de 5 segundos fueran 60 tendría que tener 60 imágenes, verdad?
Alguna idea please.
Muchas gracias
En el Game Maker ya vienen incluídas unas acciones para hacer barras de "vida", aunque puedes usarlas para lo que quieras. Conque vayas poniendo en el step que la vida se vaya reduciendo todo el rato un poco, conseguirás hacer lo que quieres.
Suerte :)!
He conseguido hacer lo de la barra de energía pero resulta que quiero asociar una barra de energía a un objeto; es decir, serían objetos que aparecen en pantalla y cada uno lleva su pequeña barrita de energía asociada y que va disminuyendo cada segundo que pasa.
¿Cúal sería la mejor forma de hacer esto?
Una manera es usar draw_rectangle en un cilco for o repeat. para dibujar tantas veces un rectángulo | como puntos de vida tengas. La coordenada x de la función se debe aumentar en cada iteracion para que se vea ||||||||||||||||
Otra manera es dibujar el rectángulo usando los puntos de vida como argumento para indicar el ancho del rectángulo. Si tienes 1 punto de vida, se dibuja con un ancho de 1, si tienes 100 puntos, se dibuja con un ancho de 100. (obviamente, en la función se pueden multiplicar los puntos de vida por un número mayor a 1 para hacer la barra más ancha)
Al final lo que es la barra de energía la he pintado con draw_healthbar(x,y,x+43,y+5,myHealth,c_black,c_red,c_green,0,true,true); en un evento Draw pero de un objeto aparte.
Si ves el fichero que he adjuntado lo mismo me entiendes mejor, no obstante te intento explicar.
Ahora mismo tengo por un lado un objeto que me pinta la barra de energía y por otro lado el objeto al que pertenece dicha barra de energía; ¿es posible unirlos los dos? Lo que quiero luego es crear un script que de forma aleatoria me genere un objeto en pantalla de forma que me pinte el gráfico y tenga asociada la barrita de energía que además va disminuyendo cada x segundos (en mi caso 5).
¿Cómo puedo juntar ambos objetos en uno solo? No sé si me he explicado.
Muchas gracias
es posible usar un solo objeto que pinte la barra de energía de toloas las instancias de los otros objetos:
with(objetoquetienevida){
// aqui dibujas la barra de energia
}
Cita de: TheSandBoxMKG en Diciembre 04, 2014, 05:02:58 PM
es posible usar un solo objeto que pinte la barra de energía de toloas las instancias de los otros objetos:
with(objetoquetienevida){
// aqui dibujas la barra de energia
}
Compi, perdona mi ignorancia pero me he perdido. No entiendo lo que quieres decirme con esa instrucción.
El juego de prueba que tengo en mente es que de forma aleatoria irán apareciendo en pantalla objetos. Cada objeto llevará asociada una barra de energía que irá disminuyendo cada segundo y en cinco segundos llegará a cero.
¿Cómo lo hago con la instrucción que comentas?
En create creas una variable : vida = 100
En evento draw dibuja la barra : draw_healthbar (o algo parecido xd).
En step usa la funcion de bajar. 30STEPS = 1 SEGUNDO (normalmente) 5s = 150STEPS. Pones vida -= 100/150.
En 5 segundos llegara a 0. Supongo que si llega a cero se destruye. STEP : if vida <= 0 { instance_destroy(); }