Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Menu para escolher a dificuldade

Bom Dia professor, tudo bem?

Primeiramente, gostaria de agradecer e elogiar o curso de Unity e sua didática. Eu fiz um enorme progresso nesse último mês aprendendo muito sobre essa ferramenta.

No entanto, eu realizei algumas modificações no meu jogo final, acrescentei uma rota de saída para o nosso jogador, onde um helicóptero com uma cabine de resgate aparece em algum lugar aleatório do mapa e dá a chance do jogador ser resgatado e fugir/vencer o jogo.

Mas eu gostaria de acrescentar algo mais nesse jogo para finalizá-lo. Gostaria de acrescentar um menu/opção do jogador escolher a dificuldade em que ele quer jogar.

Eu já pensei em alguns parâmetros que eu poderia alterar para variar a dificuldade, como por exemplo, aumentar/diminuir a área de percepção dos zumbis em relação ao jogador, a frequência da geração de kits médicos e até o valor de dano dos zumbis, porém, estou barrando na minha falta de conhecimento total da ferramenta.

Eu tentei colocar esses itens alteráveis, num script que chamei de NivelDeDificuldadeEscolhido e tentei fazer a escolha destas configurações através de botões no Menu do jogo. Até aqui sem problemas, mas o que eu não consigo é fazer esses valores serem atualizados no Script Status ou no ControlaInimigo, por exemplo.

Já tentei ajustar a ordem em que os scripts rodam no Unity, mas o resultado final é que eu nunca consigo fazer os zumbis gerados durante o jogo, usarem esse pré-set de configuração que eu escolhi antes.

Existe alguma aula que explica o modo de fazer esse tipo de ação ou alguma função específica que eu deva utilizar neste caso?

Desde já agradeço a atenção.

8 respostas
solução!

Oi, Fernando, tudo bem?

O script status roda na instancia do zumbi então para cada zumbi você teria que fazer essa alteração. Você pode fazer isso através do Start/Awake do script de Status.

Exemplo:

void Awake() 
{
    if(nivel_dificuldade == "Difícil") {
      // se nível difícil pega a vida e vida máxima e atribuí o valor da vida definida no script + 50% para dar a dificuldade
      // você também pode ter variáveis para cada valor ao invés de usar porcentagem exemplo: vida_maxima = vida = vida_dificil
      vida_maxima = vida = vida * 1.50;
    }
}

Assim quando o zumbi é instanciado os valores de status dele não ativados para a dificuldade escolhida no momento em que aparecem na cena, essa é uma opção.

Outra opção é mudar nos geradores o prefab do zumbi, então você teria um prefab para o zumbi difícil, um para o fácil e assim sucessivamente. Assim ao iniciar a cena você verifica a dificuldade, percorre todos os geradores e troca o prefab ou usa o prefab do zumbi correto (pode ser feito trocando a variável do gerador ou usando uma variável para cada tipo, você escolhe)

A última opção que consigo pensar é usar uma cena diferente para cada nível de dificuldade, nessa você tem "mais controle" porque pode ter mais geradores, usar prefabs de zumbi diferente, etc.

ps.: Fico feliz que tenha gostado do curso depois manda o jogo pra gente ver :)

Valeu Professor, vou estudar qual dessas opções será mais viável para o jogo.

Assim que eu tiver implementado essas ideias, eu adiciono o Link aqui.

Só uma pergunta final, no caso de ter uma cena diferente para cada nível de dificuldade, isso poderia deixar o jogo mais pesado por ter mais cenas, digo usaria mais espaço no HD, correto?

Talvez usarei essa opção se não conseguir implementar as outras ideias por enquanto e envio o resultado.

Obrigado.

Gasta mas não tanto assim, a cena no fim é um compilado de posições de coisas que estão na pasta Projects. Então quanto mais coisa sendo usado e quanto maior uma imagem, modelo 3d, etc. maior vai ficar o quanto de memória o jogo vai gastar.

Se tem uma cena específica que usa uma imagem gigante, o seu build vai ficar maior por conta da imagem que está sendo usada na cena e não por conta da cena em si.

Mas também não precisa otimizar taaaanto assim, hoje em dia espaço em disco é quase infinito hahaha

Ok, bom saber disso, eu não tinha pensado por esse lado.

Acredito que farei com essa ideia de ter uma cena para cada nível desejado, pois terei mais controle, como você mencionou, de todos os parâmetros que eu quero alterar.

Agradeço mais uma vez Henrique.

Abraços.

Boa Noite professor Henrique, tudo bem?

Estou enviando este comunicado para informar que deu muito certo a sua sugestão de fazer cenas separadas para cada nível de dificuldade criado.

Desta forma eu pude modificar várias variáveis como dano dos zumbis e dos chefes, porcentagem do kit médico, percepção do zumbis e, o quê particularmente mais me agradou, o ambiente em si. Coloquei o nível fácil como se fosse algo acontecendo ao entardecer enquanto no nivel difícil está mais escuro a ponto do jogador precisar de uma lanterna para se guiar.

Fiz o resgate (saída) do jogador ser por uma cabine de resgate em um helicóptero que, após alguns segundos que o jogador está dentro da cabine, ele é "içado" para a vitória (rsrsrsrs).

O único problema que estou enfrentando agora é uma demora muito grande para "buildar" o meu jogo.

Hoje, deixei o computador fazendo isso o dia inteiro (mais de 10 horas) e não concluiu essa etapa.

Nenhum erro acontece, mas ele meio que trava na parte de "Build GI data" e a barra de evolução fica ali por várias horas.

Eu li algumas informações na internet que sugeriram que eu devesse desativar o auto-generate lighting box, das configurações e tentar novamente, então estou tentando uma vez mais.

Se existir alguma outra solução para que essa tarefa não demore tanto, só me avise que eu tentarei executar.

Assim que eu conseguir finalizar essa parte do processo, eu adiciono o link do jogo aqui.

Mais uma vez, obrigado pela ajuda.

Oi, Fernando, essa trava é isso mesmo. A luz fica trocando e a Unity fica buildando e buildando e aí fica travado o build, desativando deve resolver.

Olá Henrique, boa tarde, eu finalmente consegui finalizar e publicar o jogo na plataforma Icth IO

Este é o link para o jogo e a senha:

https://ftrs.itch.io/apocalipse-zumbi

senha: zumbi

Eu acabei testando no site e ele está 98% do jeito que eu gostaria, mas ainda tem coisas para melhorar (sempre tem né? Acho que essa é a vida do Programador, olhar para um projeto e achar que ele sempre tem um detalhe pra melhorar, rsrsrsrs)

Enfim, fique à vontade para jogar e compartilhar se você achar interessante.

Obrigado pelos conhecimentos compartilhados.

Abraços.

Po, ficou bem legal! Fiquei bem feliz que tenha aproveitado todo conteúdo e feito algo tão legal.

É assim mesmo a melhor alusão que ouvi uma vez foi que fazer software é igual lavar louça. A louça nunca para 100% limpa é sempre uma iteração de sujar louça, lavar louça...

Então nunca vai ficar 100%, sempre vai ter algo que você gostaria de fazer hahahahahaha