Avatar do usuário
186557
Membro
Membro
Autor
Mensagens: 28
Registrado em: Ter Nov 27, 2018 11:34 pm
Karma: 45

Jogo travar na morte

Ter Mai 21, 2019 11:30 pm

Eu fiz um pequeno sistema de vidas, hp e morte, no caso
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
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?

Tags:
 
Avatar do usuário
None
Administrador
Administrador
Mensagens: 268
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 649

Re: Jogo travar na morte

Ter Mai 21, 2019 11:54 pm

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.
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
LLGD
Membro
Membro
Mensagens: 22
Registrado em: Seg Nov 12, 2018 2:01 pm
Karma: 14

Re: Jogo travar na morte

Qua Mai 22, 2019 4:21 pm

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:

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
}

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes