Alura > Cursos de Programação > Cursos de Jogos > Conteúdos de Jogos > Primeiras aulas do curso Unity parte 3: criando um chefão e refinando o jogo

Unity parte 3: criando um chefão e refinando o jogo

Kit Médico - Introdução

Fala, pessoal! Meu nome é Henrique Morato e bem-vindo a mais uma parte do curso de criação de um jogo de apocalipse zumbi com Unity. Vamos começar trabalhando em partes mais soltas, mas que vão melhorar o fluxo do jogo, como por exemplo a interface, que mostra quantos zumbis nosso jogador já matou, porque aí ele pode ver como está se saindo no jogo, e também fazer com que nossos zumbis deixem kits médicos quando morrem, para podermos recuperar vida.

Também vamos mexer com a morte do zumbi. Eles vão ter animações, caindo para baixo do cenário, o que torna o jogo mais bonito. Depois, vamos mexer no balanceamento, tentando aumentar a dificuldade gradativamente, baseado no tempo. Então, vamos trabalhar em um chefão para o jogo, o que faz o jogo ter um fluxo melhor, porque nosso jogador vai ter que trabalhar melhor no cenário.

Mas nosso chefe não é só um zumbi maior com um machado que dá dano. Iremos utilizar a parte de navmesh, que é uma mecha para navegação que faz com que o chefe seja mais esperto que os outros zumbis, porque ele consegue encontrar o melhor caminho entre ele e nosso jogador utilizando essa parte onde ele pode navegar.

Espero que vocês gostem do curso. Lembrem que se tiverem qualquer dúvida, postem no fórum, e mais uma vez, bem-vindos.

Kit Médico - Kit Médico

Vamos continuar a trabalhar no jogo do nosso curso. Primeiro, vamos ver o que fizemos até agora. Nossos zumbis ficam vagando até chegarmos perto, e eles vêm nos perseguir. O jogo como está hoje depende muito da habilidade do jogador. Se ele for melhor ou pior vai variar muito. Fica monótono. Talvez fosse legal incluir elementos aleatórios para melhorar o fluxo. O jogador pior pode usar esses elementos para fazer com que ele tenha um fluxo mais legal, e o jogador melhor pode utilizar para melhorar ainda mais.

Um desses elementos é que nosso jogo tem só uma chance. E se ele pudesse ganhar vida, com um elemento aleatório? Para fazer isso, temos que ter algo palpável. Tem um prefab bem interessante para isso que é o kit de primeiros socorros. Vou jogar para o nosso cenário e arrastar para perto do jogador. Não deixe longe do personagem quando produzir porque o jogador vai ter que sair andando para pegar. E sempre que você for testar algo, a melhor forma é que seja perto, a não ser que seja necessário estar longe.

No game, o kit é um pouco pequeno. Poderíamos aumentar. Agora, para fazer ele recuperar vida vamos usar script. Já vimos algumas formas de fazer isso com a bala. Seria exatamente o que vamos fazer aqui. Se eu encosto no objeto, eu destruo ele. Para o jogador, parece que ele pegou, mas nós sabemos que na verdade ele pegou e destruiu o objeto. Vamos precisar de uma colisão, para saber se estou tocando no objeto.

Se eu não marcar o trigger, quando o jogador for pegar o kit médico, vai parecer que é uma parede. Com o trigger, não tenho colisão física, mas ela é computada. É o que eu quero. Vou criar um novo script, marcar que vai ser do tipo C Sharp, e colocar o nome. Já crio adicionado ao objeto. Não gosto muito dessa forma porque o script fica fora da pasta, e o projeto acaba ficando bagunçado. Eu acho mais fácil sempre criar e arrastar para o objeto, para ficar organizado.

Já vimos que podemos usar o void com trigger, assim, quando o jogador tocar no kit médico, vai rodar o OnTriggerEnter, porque nosso objeto é um trigger. Se não for, você tem que usar o OnColisionEnter.

Se só o jogador vai poder ser curado pelo kit, vou perguntar se o objeto tem a tag jogador. Se tiver, vou destruir o kit médico. Mas ainda precisamos fazer com que o kit cure o personagem.

Mantendo o fluxo do que fizemos nos cursos passados, quando fomos no controlsJogador, criamos uma interface de Imatavel no nosso método de tomar dano. Podemos criar outra interface seguindo o fluxo de organização, que vai ser o Icurável, para curar vida. Vou definir uma assinatura, que vai ser do tipo void, e vou passar a variável de quanto de vida vamos curar. Lembrando que tem que ser public, porque vamos chamar o método em outros locais.

Esse método vai pegar a mesma coisa que o tomar dano e fazer exatamente o inverso. Vou pegar o statusJogador.Vida e somar com a quantidadeDeCura. Agora, no kit médico podemos dizer que o objetoDeColisao vale o jogador. Vou pegar esse objeto de colisão, um componente dele, que é o ControlaJogador, e vou chamar o método curarVida, passando um valor que podemos definir numa variável. Esse último é melhor definir como privado, porque não queremos que cada kit médico cure um valor. Se fizermos isso vai ser aleatoriamente.

Quando meu kit médico colide com o nosso jogador ele cura 15 de vida, e depois é destruído. Só que ainda temos que atualizar na interface.

Kit Médico - Zumbi gerar Kit Médico

Vamos continuar a trabalhar no nosso kit médico. Já notamos que quando estamos jogando, nossa barra de vida não é atualizada. Também queria que vocês notassem que nossa vida pode ultrapassar o valor máximo quando pegamos o kit médico. O valor máximo deveria ser nossa vida inicial. São algumas coisas que temos que consertar.

No controlaJogador, na parte de vida tenho que fazer nossa interface atualizar. Para isso, é basicamente fazer o que faço no script de tomar dano e começa a funcionar. Agora tenho que manter a vida no valor máximo dela.

Para isso, posso dar um se minha vida passar da vida inicial, tenho que dizer para manter a vida em um valor igual à inicial. Ou seja, suponhamos que estou com 90 de vida e pego o kit médico. Vou ficar com 105 de vida. Mas a vida é maior que a inicial, então tenho que manter em 100 e depois atualizar a interface. A ordem é bem importante.

Pelo fluxo do jogo, talvez não fizesse diferença se isso fosse rodado no update, mas como só acontece quando pego o kit médico faz diferença.

Também precisamos fazer o kit médico sair de algum lugar, como por exemplo dos zumbis. Vou aplicar o prefab no zumbi. Quando nosso zumbi morre, pode ter uma chance do kit médico ser criado. Para isso, podemos criar um novo método, que é VerificarGeracaoKitMedico. Como parâmetro, vou colocar uma porcentagem. Vamos supor que nosso zumbi tem 20% de chance de gerar o kit médico. Ele vai calcular.

Primeiro, precisamos saber quantos por cento de chance vou ter de gerar o kit médico, e a segunda é do próprio kit médico no script. Eu vou colocar 10% porque acho um valor legal que vai funcionar. Se você quiser, pode colocar mais. Coloco um f na frente do 0.1 para ele saber que é um float, senão ele acha que é outro tipo. E vou criar um GameObject que vai ser o kit médico.

Agora, a primeira coisa que devemos fazer é ver se tenho ou não que gerar o kit médico. Vamos pegar e gerar um número de 0 a 100%. Por exemplo, 25%. Só que 25% não está dentro dos 10% que nós tínhamos combinado. Só vou gerar kit médico se estiver de 10% para baixo.

Vou usar o random.value, que faz exatamente isso que eu quero. Se o número for menor ou igual minha porcentagemGeracao, devo gerar kit médico. Vou gerar no pé do zumbi, no pivô. Mas você poderia escolher onde. E a rotação vai ser zerada. Quando o zumbi morrer, vou verificar se tenho que gerar kit médico, passando a porcentagemGerarKitMedico.

Utilizando essa forma com o parâmetro que eu criei e a porcentagem com a variável, posso facilmente aumentar a porcentagem que eu quero.

Falta a gente preencher o kit médico na variável. Um truque legal é apertar o cadeado. Assim o lado direito fica travado e posso navegar sem problemas. Depois destravo e seleciono o que eu quero novamente.

Só que quando nosso jogador mata o zumbi e gera kit médico, ele pode deixar vários e pegar quando precisar. Isso não é legal, deixar o jogador acumular. Para evitar isso, vamos dizer que o kit médico vai ter um tempo de destruição. Ele vai ficar, por exemplo, 5 segundos vivo e depois vai se destruir. O Destroy tem uma forma legal que é para destruir o objeto ou passar um float com quem quero destruir e depois de quanto tempo.

Finalizamos essa parte de criar o kit médico e gerar um elemento aleatório no nosso jogo.

Sobre o curso Unity parte 3: criando um chefão e refinando o jogo

O curso Unity parte 3: criando um chefão e refinando o jogo possui 146 minutos de vídeos, em um total de 41 atividades. Gostou? Conheça nossos outros cursos de Jogos em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Jogos acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas