Encuesta
Pregunta:
Como hago una barra de hambre y que se restaure comiendo
Opción 1: si se hacerlo
votos: 1
Opción 2: es imposible sin codigos
votos: 3
Opción 3: no entiendo lo que quieres hacer
votos: 0
el problema es que soy nuevo en esto de game maker 8 y si me pueden ayudar como hago una barra de hambre y que se restaure comiendo lo agradecería si es posible sin códigos
Cita de: Nick el capo en Junio 18, 2015, 04:24:22 AM
el problema es que soy nuevo en esto de game maker 8 y si me pueden ayudar como hago una barra de hambre y que se restaure comiendo lo agradecería si es posible sin códigos
Puedes usar los eventos alarm.
Pones un tiempo en alarm, haciendo que en el evento de ese alarm se produzca la "muerte por hambre". La comida incrementaría el valor del alarm, demorando la activación del evento.
No hay muchas opciones para dibujar la barra sin escribir código, sólo están las acciones "dibujar rectángulo" y "dibujar gradiente", pero al final resulta más complicado que usar una función como draw_healthbar, además con código puedes hacer una barra con forma personalizada y con cualquier tipo de decoraciones.
No temas escribir código, es mejor que el sistema DnD, y éste problema es lo bastante sencillo para empezar a practicar.
Lo que propuso Marth es una buena idea, lo implementé en el ejemplo adjunto.
Yo uso Sprites para las barras de vida(es lo mismo que una barra de hambre, de mana de lo que sea) pero por que quería hacer una barra de vida más estilizada con degradados y tal, el spr_mitad_vida es el que esta en medio de la barra y el que básicamente sumara o restara dependiendo siempre de la vida que tenga tu personaje.
var i,xx_hp=71,yy_hp=144,xx_mana=71,yy_mana=160;
if(hp_player >= 1){
draw_sprite(spr_inicio_vida,0,xx_hp-1,yy_hp);
for(i=0;i<hp_player;i++){
draw_sprite(spr_mitad_vida,0,xx_hp,yy_hp);
xx_hp++;
}
draw_sprite(spr_final_vida,0,xx_hp,yy_hp);
}
if(mana_player >= 1){
draw_sprite(spr_inicio_mana,0,xx_mana-1,yy_mana);
for(i=0;i<mana_player;i++){
draw_sprite(spr_mitad_mana,0,xx_mana,yy_mana);
xx_mana++;
}
draw_sprite(spr_final_mana,0,xx_mana,yy_mana);
}
Tienes que ser consciente que la barra visual es nada más un elemento visual, que sume o baje el hambre no depende de la barra si no de otro factor, de la variable que se llame hp_player en mi caso en el tuyo sera barra_hambre por ejemplo y que se incremente de una u otra forma depende de ti, es decir quieres que al coger un objeto y comertelo se incremente, pues tienes que realizar una función que se encargue de ello con un distance_point + mouse_check_button etc...
Muy fácil.
solo crearemos un objeto cualquiera que servirá de controlador:
obj_HungerControl:
Create Event:
globalvar hunger; //Inicializa globalmente la variable hunger
hunger = 10 //la cantidad de "hambre" que debería tener el player"
Draw Event:
draw_rectangle(0,0,hunger*10,32,false) //personaliza las dimensiones a gusto
si queremos que el nivel de "hunger" disminuya constantemente ponemos en el create una alarma(alarm[0] = room_speed) y hacemos esto:
alarm 0 event:
hunger -= 1 //disminuye una determinada cantidad de hambre
alarm[0] = room_speed //repite la alarma
digamos que "comer" equivale a colisionar con un objeto que represente la comida
obj_player:
Collision Event:
hunger += 2
with other instance_destroy()
y listo 8)