Alura > Cursos de Programação > Cursos de Jogos > Conteúdos de Jogos > Primeiras aulas do curso Unity parte 4: Chefão, partículas e menu

Unity parte 4: Chefão, partículas e menu

Vida do Chefe - Introdução

Fala pessoal, bem-vindo a mais uma parte do nosso curso de criação de um jogo de apocalipse zumbi, utilizando o Yield. Nesse curso a gente vai dar um polimento final no nosso jogo para ele ficar com aspecto mais profissional. Então, a gente vai pegar o nosso chefe, que a gente tinha feito nos cursos anteriores e vai colocar uma vida nele.

Então a gente vai começar o nosso jogo aqui trabalhando nessa parte, também um aviso aqui quando o nosso chefe aparece no jogo para dar um feedback para o jogador de como que isso está funcionando, o que está acontecendo e o nosso chefe tem uma vida na cabeça dele que vai trocando de cor baseado no quanto de vida que ele tem.

Isso dá um aspecto mais legal, porque o nosso jogador acaba por sentir se ele mata o chefe, se ele foge, esse tipo de coisa, funciona melhor, dá um fluxo melhor no nosso jogo, além de trabalhar no polimento. O aviso também faz com que isso fique bacana, porque o nosso jogador já se prepara para o que vai acontecer.

E depois a gente vai trabalhar no gerador específico para o nosso chefe de fase e a gente vai ver uma estrutura um pouco diferente aqui para pegar e soltar o nosso chefe em locais diferentes do nosso cenário, baseado na distância entre eles e essas posições.

[01:18]Eu sempre vou gerar o chefe numa posição mais distante do nosso jogador, do nosso personagem principal, porque aí ele pode se preparar enquanto o chefe vem buscando ele pode se preparar para jogar o jogo contra o chefe.

Depois dessas partes bacanas que a gente tem que trabalhar, que faz sentido a gente trabalhar, a gente vai fazer um menu para o nosso jogo. Um menu bem legal aqui, que tem sons dos botões inclusive, para dar um aspecto bem mais bacana.

[01:51]Dá um aspecto bem mais legal no nosso jogo, afinal não faz tanto sentido o nosso jogador começar o jogo direto no jogo. Quando ele vai jogar é bom ele entrar no menu, se preparar olhar o nome do jogo é esse e clicar em jogar para ele poder jogar o nosso jogo afinal.

Depois a gente vai trabalhar numa parte de partículas aqui, que são esse fogo aqui e também esse sangue que está jorrando do nosso zumbi e do chefe. As partículas são bastante utilizadas para fazer esse tipo de elemento: como fogo, fumaça, explosão, faísca, esse tipo de coisa.

A gente vai ver como trabalhar ela das duas formas: fazendo fogo, e também fazendo o sangue que jorra do nosso zumbi quando a bala atingir para ter um conhecimento legal de como as partículas funcionam.

Espero que vocês gostem do curso, não se esqueçam de se tiver qualquer dúvida, postar no fórum, mais uma vez bem-vindos e vamos lá!

Vida do Chefe - Barra de Vida

Nosso Boss já está totalmente funcional, só que tem algumas coisas que a gente pode melhorar. Por exemplo, eu vou desabilitar aqui todos os geradores e vou jogar um Boss aqui pra cima, pra gente poder analisar ele com mais calma. Então, vou jogar um Boss aqui, pronto. Vou botar ele aqui, legal.

A gente que criou o jogo sabe que quando eu estou atirando no Boss ele morre com 10 tiros. Mas quem está jogando sabe disso? Então vai aparecer que o Boss é um Zumbi maior, certo?

E aí a pessoa vai atirando, vai jogando o jogo assim... um jogador que joga o jogo casualmente, não vai entender como que esse Boss funciona, pelo menos da primeira vez que ele joga.

O Boss não dá essa impressão de que, olha eu vou morrer com mais tiros, muito mais, no caso. Poque um zumbi normal morre com um e tem um aqui que eu estou dando cinco tiros e não aconteceu nada, como que isso funciona?

Então para tirar essa impressão a gente poderia, por exemplo, mostrar para o jogador quanto que o Boss ... está faltando, o quanto que está faltando para o nosso Boss morrer. E a gente pode fazer isso através de, por exemplo, uma barra de vida.

Então vamos criar uma barra de vida para o nosso chefe aqui, para o nosso Boss? Como que a gente pode fazer isso? Porque vocês viram que as barras de vida até o momento eram partes da interface.

Não tem eu como linkar ao nosso Chefe. A não ser que eu coloque uma barra de vida aqui na interface com um símbolo... Chefe aqui e a barrinha de vida dele, ela fica diminuindo à medida que o Chefe morre.

Mas tem algo mais legal que a gente pode fazer aqui com a Unity, que é criar uma barra de vida em cima da cabeça do nosso Chefe. Pra fazer isso a gente vai fazer o seguinte: A gente vai criar um novo Canvas, então eu vou em Create, UI, Canvas, criei um novo Canvas, esse Canvas ele vai ser um pouco diferente, ao invés dele ser um Canvas do tipo Screen-Space Overlay, significa que ele vai utilizar da nossa tela, do espaço da nossa tela, como o outro Canvas que a gente fez, a gente vai criar um World Space, que significa que o nosso Canvas vai utilizar do espaço do mundo, ou seja, o espaço da nossa fase.

Se você notou agora, quando eu marquei o World Space aqui, o Canvas desbloqueou essas partes de cima, por quê? Porque agora não é o Canvas que vai lidar com essa parte aqui, certo, que seria automaticamente baseado no tamanho da tela, a gente que vai poder movimentar o nosso Canvas.

Então vou jogar o Canvas aqui um pouquinho mais pro meio, só que você dá pra ver que ele está muito grande, legal? Então, a gente tem que diminuir esse Canvas, mas não é legal a gente diminuir ele pela largura e altura aqui, porque eu posso fazer isso,

diminuir o Canvas pela largura e pela altura. Fazer isso aqui vai significar que o nosso Canvas tem menos pixels para poder trabalhar.

Então quando você está lidando com Canvas e o World Space você pode diminuir pela própria Scale, ou então, você pode apertar R e pela escala eu vou lá e diminuo para um tamanho que seja bacana. Ainda está um pouquinho grande, mas tudo bem, vamos jogar ele pra cá, já está aqui.

Legal? Tem um Canvas aqui que serve para mim no espaço do mundo e eu posso rotacionar ele, fazer o que eu quiser. Eu vou colocar ele numa largura e altura que seja condizente com a vida, uma barra que é fina de altura e larga de largura.

Então uns 400 aqui, mais ou menos, por uns 120, poque aí, fica algo que é fino de altura, pequeno e largo na largura.

Então vou diminuir mais aqui, agora sim é o Canvas que está dando a impressão de uma barra de vida. Olha lá. Legal? Então está com Canvas aqui, diminui ele bastante, não mexi aqui na altura e na largura dele e coloquei ele aqui na cabeça do Boss porque agora ele pode participar do nosso mundo.

Então coloquei ele aqui na cabeça do chefe, agora a gente tem que colocar a barra de vida que é uma Slider, então eu vou clicar com o botão direito nesse Canvas aqui e o Interface Slider, aí vou colocar Slider do mesmo tamanho que a gente colocou o Canvas, que é 400 por 120. Então a barrinha larga aí bacana.

Se você quiser você pode diminuir um pouquinho a altura, eu acho que ficou um pouco alta demais, ela pareceu, parece muito larga assim... Então vou colocar um 100 aqui no Canvas e um 100 na Slider.

Agora sim, e a gente vai modificar a Slider da mesma forma que fizemos com a vida anteriormente, a gente vai abrir a Slider, deletar o Handle Slide Area, deletei, legal, pegar a Slider eu vou encher ela aqui com value, com valor, enchi.

Vou lá no Fill Area, e aqui no Left eu vou colocar 0, aqui no Right eu vou colocar 0, vou abrir essa parte do Fill Area e no Left vou colocar 0 e no Right vou colocar 0, legal.

Agora eu vou simplesmente trocar essa imagem aqui, eu posso até usar uma que a gente já tenha aqui para a vida do nosso personagem, ou talvez essa do botão, mas pronto, troquei essa imagem e se você quiser você pode usar qualquer outra imagem que a gente tem na nossa parte de interface.

Então, troquei por essa imagem aqui, bem bacana, legal. Agora o Canvas, esse Canvas aqui que vai ser a vida do nosso Chefe, tem que seguir ele, então vou colocar ele dentro do Chefe, porque quando o meu Chefe andar... a vida está seguindo ele, inclusive, ela está até no lugar errado, eu posso colocar ela um pouquinho mais para o lado.

Inclusive, se for o caso eu posso zerar em X e zerar em Z, e só movimentar ela no Y. Eu vou diminuir ela um pouquinho mais, abaixar um pouquinho mais, colocar um pouquinho para o lado, ok fica legal, já está dando uma melhorada.

Só que agora essa vida tem que refletir a vida que o nosso Chefe tem, mas como ela faz parte do nosso Chefe, não faz muito sentido eu pegar e jogar a lógica disso pro Canvas, por quê?

Porque quando um chefe é criado ele tem que saber quem é a vida dele, e o Canvas, aqui o outro Canvas que tem esse tipo de Controle Interface não vai saber quem é a vida desse Chefe atual que foi criado. Então vale mais a pena eu falar aqui no Chefe aqui, o próprio Chefe, então eu vou abrir o script dele, o próprio Chefe vai saber quem é a vida dele.

Então eu vou criar uma variável pública aqui, do tipo Slider que não vai aparecer porque a gente tem que colocar Using Unity Ending, ponto, UI aqui em cima, então Public Slider, vou dar o nome aqui de: Slider vida Chefe, e vou criar um método pra atualizar essa Slider. Então vai ser o: Void Atualizar Interface, mesma coisa que a gente fez basicamente nas outras Sliders também.

Vou pegar a Slider do Chef, ponto, o valor dela e falar que, o Status Chefe... falar que o valor dela é igual, Status Chefe e a vida que o nosso o Chefe tem hoje. Então quando eu chamar esse método de atualizar a interface eu vou pegar o valor da Slider e mudar pra vida atual, ou seja, se o Chefe tomar um tiro eu vou mudar o valor da Slider.

Então eu tenho que chamar esse método quando o nosso chefe toma um tiro, porque aí eu atualizo a vida e depois atualizo a Slider.

Estão abaixo da linha aqui de tirar o dano, porque aqui eu atualizo a vida, abaixo dessa linha eu atualizei a vida, agora eu atualizo a minha interface com a vida atual... faltou uns parênteses aqui. Prontinho, então mexer na vida? Tirei o dano? Atualiza a interface.

E aí agora o que que eu tenho que fazer, a nossa Slider aqui se você olhar a nossa barra de vida, o valor dela na verdade vai de 0 à 1. Então, a gente tem que falar que ela vai de 0 até a vida do nosso Chefe, que é a vida máxima. E aí eu vou mudar o valor dela de acordo com a vida atual.

Então aqui no Start eu posso falar... olha Slider... seu valor máximo... é igual a minha vida inicial. Seu valor máximo é igual a minha vida Inicial, e aí eu posso aproveitar e chamar o método Atualize Interface pra atualizar a vida, o valor dela,

porque o valor máximo dela aqui, o valor máximo da Slider é igual a vida Inicial, mas eu tenho que atualizar o valor da Slider pra vida atual. Que no caso do chefe quando a vida... quando ele for criado a vida atual vai ser igual a vida inicial também, então eu posso aproveitar do método que a gente já criou.

Então eu vou pegar: A vida máxima é igual a vida inicial e atualiza o valor da Slider agora, porque tem o valor máximo e o valor... o valor máximo é de... ela vai de 0 até quanto, e o valor que está atual é o valor que está marcado aqui, porque se eu mudar só o valor máximo pra 10, por exemplo, o valor continua 1.

Então eu tenho que mudar além do valor máximo, falar que o valor atual é igual a vida atual, que quando o chefe nasce é a vida inicial. Salvei, vamos testar. Olha lá... faltou alguma coisa, o quê?

Faltou no nosso Chefe a gente falar quem é essa Slider, pronto, dou play, vamos testar... olha a vida lá caindo, agora dá pra eu ver que o chefe está morrendo, agora quem está jogando o jogo,

olha essa barra de vida e percebe, o chefe está morrendo então eu posso ou desviar dele, dependendo da quantidade de vida que ele tem, ou talvez, atirar mais rápido... porque ele já está morrendo já eu vou terminar de matar ele e depois eu me livro desses outros zumbis.

Esse tipo de coisa torna o fluxo do jogo bem melhor. Lembra de aplicar o prefer do seu Chefe pra essa parte da Slider ser computada. Agora todo Chefe sabe quem é a própria Slider e a gente tem uma barra de vida funcional.

Vida do Chefe - Vida como Billboard

A gente tem a nossa barra de vida, certo? Ela já está na cabeça do Boss e já está seguindo ele, só que olha só, quando o nosso Boss vira a barra de vida não fica legal pra gente, ela não é tão visível.

O ideal seria que ela sempre olhasse pra nossa câmera para gente sempre ver ela do melhor ângulo que a gente tem, independente da rotação do Boss, ela tem que olhar pra nossa câmera.

Como que a gente pode fazer isso aqui com a nossa barra de vida? Eu posso pegar o nosso Canvas e rotacionar ele assim um pouco pra ele ficar mais ou menos olhando pra nossa câmera, só que isso funciona quando o Boss vem na nossa direção, a barra de vida já está bem legal, agora se ele virar ou se ele rotacionar não fica tão bacana.

Então a gente tem que fazer isso via script, que é fazer basicamente o quê? Fazer essa barra de vida virar um billboard. Billboard, quando a gente está falando de games é um Sprite que sempre vai olhar pra nossa câmera.

Ele é usado pra esse tipo de coisa aqui que a gente vai fazer agora. Então no nosso Canvas, eu vou jogar um script aqui, vou clicar no botão direito, criar um novo script que eu vou chamar de Billboard. E eu vou colocar esse script no Canvas ao invés de colocar na Slider, já que o Canvas é o pai da Slider e ele que está lidando com essa interface e dentro dele não tem mais nada a não ser a nossa Slider.

Então Billboard, e aí se a gente quiser adicionar um outro elemento, tipo um ícone esse elemento também vai olhar pra nossa câmera porque o script está no Canvas.

Então vou abrir o script aqui, dar um reload na solução, vou apagar tudo... pronto, legal. O que a gente tem que fazer aqui no caso desse Billboard, a gente tem que fazer então ele olhar pra nossa câmera, do melhor ângulo independente da rotação do nosso Boss.

Então se eu tenho que olhar pra nossa câmera aqui o tempo todo eu já sei que é no Void Update, e aí ele tem que olhar pra câmera, que é basicamente... deixa eu mostrar a câmera aqui pra vocês, ela está basicamente aqui, então ele vai ter que olhar pra essa câmera.

Só que como que a gente vai ter como referência essa câmera aqui, ao invés de eu ter que pegar o objeto da câmera e falar: Olha Billboard, olha pra esse objeto aqui, a gente pode fazer o seguinte: Olha a câmera ela tem uma posição pra frente que é esse eixo Z aqui, ela está olhando pra esse lado, o que eu tenho que fazer é basicamente falar pro Billboard: Olha você tem que olhar pra posição oposta à essa, pro outro lado.

Então você vai olhar... a câmera olha pra cá e você vai olhar pra lá, porque o nosso Billboard está aqui. Então pra fazer isso a gente vai fazer o seguinte: Pra pegar a posição da câmera eu tenho que... o Unity me dá uma parte de câmera, ponto main, aí eu já estou na câmera atual que é essa aqui, a câmera principal, a main camera.

E aí nela, eu vou pegar o transform, ponto, forward dela, que seria o eixo Z, a posição para a frente que é essa aqui, e se eu quero olhar pra a oposição oposta à essa é só eu falar que isso aqui é negativo, ou seja, eu vou olhar pro oposto dessa posição pra frente.

Então eu já achei aqui a posição que eu quero que o meu Billboard olhe, que no caso o meu Canvas olhe, só que como eu vou fazer ele olhar pra essa posição? Aí é que está, o Unity tem um método bem legal, que é o Transform, ponto, lookat que faz exatamente isso, eu pego uma posição e falo olha eu quero que você olhe pra essa posição, aí ele muda a rotação do objeto baseado na posição que você está passando que é essa aqui.

Só que eu não quero que você olhe para posição oposta à câmera baseado na câmera, eu quero que você olhe pra posição oposta à frente da câmera baseada em onde você está.

Então eu tenho que pegar o transform, ponto, position e tirar a posição que eu quero que ele olhe, legal? Vamos fazer um teste disso? Dá o play... olha lá, agora independente de pra onde que o nosso Boss está andando ou olhando a vida sempre está olhando pra nossa câmera, certo? Baseado no nosso script Legal?

Vamos testar de novo. Pronto, beleza. Então assim, a gente fez um billboard aqui que a gente pode utilizar em qualquer elemento do nosso jogo que a gente queira que sempre fique olhando para a nossa câmera.

Sobre o curso Unity parte 4: Chefão, partículas e menu

O curso Unity parte 4: Chefão, partículas e menu possui 140 minutos de vídeos, em um total de 29 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