Página 1 de 1

Jogo travar na morte

Enviado: Ter Mai 21, 2019 11:30 pm
por 186557
Eu fiz um pequeno sistema de vidas, hp e morte, no caso

Código: Selecionar todos

global.bunny_vida = 100; //verifica o HP do player
global.vidas = 3 // verifica quantas vidas o player tem
E para a morte eu fiz isso

Código: Selecionar todos

if global.bunny_vida > 100 global.bunny_vida = 100
if global.bunny_vida < -1 global.bunny_vida = -1

if global.bunny_vida < 0 {
global.vidas -= 1;
room_restart()
}
Mas quando o HP do player chega a 0 o jogo trava, eu tentei usar um "game_restart()" no lugar do "room_restart()" funcionou, mas o contador de vidas não diminui. Como posso resolver?

Re: Jogo travar na morte

Enviado: Ter Mai 21, 2019 11:54 pm
por None
Seu código possui algumas "inconsistências".

Tu quer que quando o coelho não tiver mais hp, ele perca a vida, porém tu tem que garantir que isso só vai ocorrer uma vez, caso contrário ele vai tirar vidas ad infinitum.

Então tu precisa aumentar um pouquinho o seu código do If.

Seria mais ou menos

If (coelho.vida <= 0)
{
Global.vidas--;
room_restart();
}

Isso SE o seu objeto controlador for persistente e você tenha feito um singleton Pattern para garantir que só vai haver 1 objeto controlador.

Re: Jogo travar na morte

Enviado: Qua Mai 22, 2019 4:21 pm
por LLGD
Eu particularmente crio um objeto controle, defino ele como persistente, coloco todas as variaveis globais nele. Crio uma sala: "rInit" e coloco ele nessa sala, no creation code da sala, ou no create do objeto controle eu mando ele ir pra outra sala com o room_goto_next(); e então seu código no step ficaria assim:

Código: Selecionar todos

global.bunny_vida = clamp(global.bunny_vida,0,100); //Isso grampeia os valores da vida para 0 e 100

if global.bunny_vida == 0 {
    global.bunny_vida = 100;
    global.vidas -= 1;
    room_restart();
}

if global.vidas == 0 {
    //Destrói todos os objetos e vai para a sala inicial, isso porque o game_restart() está bugado.
    show_message("Todas as suas vidas acabaram, tente novamente.")
    with(all) //Com todos os objetos
    {
        instance_destroy(); //Destrói
    }
    room_goto(rInit); //Volta pra tela inicial e reinicia o jogo
}