Bem-vindo de volta meus colegas desenvolvedores de jogos em um novo vídeo.
E neste vídeo,
quando executamos nosso jogo,
quando clicamos no inimigo,
você notará que ele tem uma variável extra aqui,
que é a saúde inimiga e phi atirar nele com algumas balas.
Observe como sua saúde se deteriora de 100 para 40.
E se eu continuar atirando nele de 40 a 0 e ele desaparecer porque ele está morto.
Então, vamos aprender muitas coisas neste vídeo.
Coloque seus limites de pensamento e vamos começar.
Oh, ok, então agora é hora de começar a danificar nossos inimigos usando o método.
Então, a primeira coisa que vamos fazer é criar uma maneira
adicionar saúde ou remover a saúde do nosso inimigo.
Então, vou entrar no controlador inimigo.
E aqui, vamos abrir o Visual Studio.
E vou criar uma variável inteira que representará a saúde do inimigo.
Por que é um número inteiro?
Bem, porque queremos manter as coisas simples.
Não queremos que seja um flutuador.
Então, vou adicioná-lo aqui sob a velocidade.
Então, vamos criar um campo serializado que será do tipo inteiro.
E vai ser chamado de Saúde.
E vou defini-lo para ser 100 no início,
então nunca temos a Saúde em 0.
Vou olhar para trás para o inspetor e ver como isso parece.
E eles agora, ok, ótimo.
Então agora você pode ver que eu tenho a opção aqui de mudar a saúde do nosso inimigo.
Agora, como vamos garantir que toda vez que o inimigo for atingido,
removemos uma conta de saúde.
Vamos criar um método para fazer isso. Quais são os métodos?
Bem, você já me viu criar métodos.
A atualização é um método.
Começamos como um método e também o gizmo selecionamos como um método.
Mas vamos nos aprofundar um pouco mais na estrutura real de um método e ver como o usamos.
Então deixe-me colocar meu laser,
e essa é a estrutura do método.
Portanto, é semelhante à forma como criamos variáveis na medida em que ela tem uma acessibilidade.
Então, um tipo de acesso, o que é isso?
É um privado, um público?
Não podemos torná-lo um campo serializado,
mas podemos criar um público,
o que significa que podemos acessar esse método de qualquer lugar em nossos scripts,
em qualquer outro script.
Se for privado, só podemos acessá-lo dentro da classe em que estamos usando.
Em seguida, temos o tipo de retorno.
Por exemplo, retornos vazios, nada.
O que é um tipo de retorno?
À medida que avançamos pelo curso,
você entenderá todos os diferentes tipos de retorno.
Mas o que isso significa é que podemos realmente retornar um valor desse método.
Se não retornar nada,
isso significa que está vazio.
Por exemplo, deixe-me mostrar-lhe aqui.
Isso é um vazio porque não retornamos nenhum valor.
Não esperamos que nenhum valor seja devolvido a
partir desse método mais tarde, quando tivermos um método que retorne algo,
talvez, eu vou me certificar de apontar isso para você.
Em seguida, temos o nome do método.
Então, geralmente, sempre que você quiser nomear um método,
você precisa nomeá-lo pelo que esse método realmente faz.
E você pode notar como criamos o nome de um método.
Ao contrário das variáveis, a primeira palavra tem que estar sempre na classe inferior,
ou a primeira letra da primeira palavra tem que ser classe mais baixa.
Em um nome de método,
todas as palavras dentro do nome do método precisam ser maiúsculas.
Então você pode ver essa velocidade de adição,
então esse método é privado,
então só o usamos em um vazio de classe.
Ele não retorna nada e seu nome está adicionando velocidade.
Isso significa que ele adiciona velocidade a alguns tipos de objetos.
E quais são os parênteses no final?
Embora esses sejam chamados de parâmetro,
parâmetro significa que podemos enviar um determinado valor para esse método.
E ele pode usá-lo para fazer cálculos ou qualquer coisa que quiser.
Vamos demonstrar como tudo isso funciona no método que danificará nossos inimigos.
Então, basta falar, vamos começar.
Vou abrir o Visual Studio e aqui,
e vou criar um método dentro do controlador inimigo.
Vou rolar para baixo na Terra, a atualização.
E aqui criarei um método para danificar o inimigo.
Primeiro, o que eu preciso que seja?
Tem que ser privado?
Então eu só posso usá-lo dentro daqui e o controlador inimigo,
ou tem que ser público?
Isso significa que posso acessá-lo de qualquer lugar.
Bem, provavelmente vou precisar que seja público porque quero que
as balas danifiquem o inimigo sempre que atingirem o inimigo.
O que vai ser um vazio público,
e eu vou chamá-lo de inimigo de dano.
E é um vazio porque não precisamos devolver nada do inimigo de dano.
Tudo o que precisamos fazer é remover um pouco de saúde que já temos.
E aqui, então a saúde do inimigo.
E vamos mudar isso ou não,
vou te mostrar um truque muito legal e fique um pouco.
De qualquer forma, vamos continuar com nosso foco principal.
Também quero enviar-lhes um parâmetro do tipo inteiro,
que será o dano.
Eles podem.
Então, agora o que posso fazer é acessar a saúde e eu posso remover dela.
Desculpe, o dano sofrido.
Então, agora o que acontece?
Você já sabe o que significa o sinal de menos.
Isso significa que removemos da saúde os danos sofridos.
E, finalmente, precisamos ter certeza de que, se a saúde for menor ou igual a 0.
Isso significa que você acabou de adicionar um pouco de espaços aqui.
Isso significa que nosso inimigo morreu e eu quero destruir o objeto do jogo.
Ok, então vamos dar uma olhada em outro momento para isso.
E antes de fazermos isso, acho que o nome de saúde de uma variável não é tão específico.
Acho que precisamos mudá-lo para a saúde dos inimigos.
Então, o que posso fazer aqui?
Posso mudar o nome aqui para a saúde do inimigo.
Ok, e então role aqui para baixo e mude esses dois aqui.
Mas isso é um pouco complicado,
especialmente se tivermos usado saúde talvez 10 vezes em nosso código.
Então, como podemos evitar isso?
Basta clicar duas vezes em saúde,
clicar em Control R, R.
E agora você verá que pode adicionar isso.
Então vou chamar isso de saúde inimiga.
Vou pressionar Enter.
E se eu rolar para baixo,
você verá que a saúde do inimigo mudou.
Então, como lembrete,
controle ou clique duas vezes,
mantenha pressionada a tecla Control R.
E você poderá alterar o nome da variável e alterá-lo em todos os lugares e no jogo.
Agora, a próxima coisa que vamos fazer é realmente chamar esse método.
E de onde chamamos isso?
Precisamos ir para o controlador de bala.
E deixe-me encontrar o controlador de bala aqui em algum lugar.
Onde está nos scripts?
Nas balas, na lei terrível no controlador.
E aqui, quando acionamos algo, então atingimos um objeto,
o que vamos fazer,
vamos deixar que eu remova esta linha daqui.
Por isso, instanciamos o impacto e vamos seguir em frente e acessar a colisão.
Então, qual é a colisão aqui?
Como você pode ver, este é um parâmetro que está sendo enviado para o método em Trigger Enter.
Qual é a colisão? É o objeto com o qual acabamos de colidir.
Por exemplo, se batermos em uma parede,
a colisão seria a parede que atingimos.
E no nosso caso,
a colisão será o inimigo que atingimos.
E vou pegar o componente, com licença.
Então, vou pegar o componente que está nessa
colisão e ele vai ser o controlador inimigo.
E no controlador inimigo,
porque eu fiz esse método aqui público,
posso acessá-lo aqui,
que é o dano e a amina.
E o que devo enviar para esse inimigo de dano?
Você pode ver agora, aqui,
não há argumentos,
então precisamos dar o dano sofrido.
Você notará tudo isso aqui.
Então, vou enviar a ela o valor do dano.
Mas não criamos um valor de dano.
Então, vamos em frente e criá-lo aqui.
Portanto, a bala também terá uma variável que será um número inteiro.
E isso só copiará isso,
que será o valor do dano e eu vou configurá-lo para cerca de 10.
Então, o que está acontecendo aqui?
Toda vez que a bala colide com algo,
obtemos a informação dessa colisão.
Temos a colisão,
obtemos o componente do controlador inimigo
e acessamos o método inimigo de dano lá.
Enviamos a ele o valor do dano.
Vamos para o controlador inimigo.
É público, tudo o que temos a saúde inimiga,
removemos os danificados tomados.
O dano sofrido como obviamente o valor do dano aqui.
E então verificamos se a saúde é menor ou igual a 0.
Se for, destruímos o objeto do jogo porque o inimigo fez.
Então. Vamos salvar tudo isso.
E vamos em frente e testá-lo no Unity.
Então, vou clicar no inimigo,
certifique-se de que vemos a saúde do inimigo.
Vou executar o código.
Vou tentar atirar em nosso inimigo.
Então mostrei até as balas ficarem em terceiro.
Vamos ver a saúde do inimigo.
Foi feito.
Lá vai você. Tornou-se 90.
Deixe-me tentar atirar nele duas vezes agora sua saúde deve se tornar 70 aqui.
Mantenha esses 80, 70, lá vai você.
O inimigo está sendo danificado.
E se eu continuar atirando nele com todas as minhas balas,
você notará que 70 se torna 0 e o inimigo desaparece.
Mas observe o que acontece agora.
Primeiro de tudo, nossas balas continuaram voando em todos os lugares.
Por que isso aconteceu?
Deixe-me diminuir o zoom.
Você pode ver que as balas não interagiram com a parede.
Eles não foram destruídos.
E temos um erro aqui.
E deixe-me abrir a janela do console para que possamos ver qual é o problema. Lá vai você.
Você pode ver que temos por erros para
as quatro balas aqui que interagiram com a parede.
E vamos clicar duas vezes nesta seta e ver o que aconteceu.
Oh, então você pode ver que nos leva para a linha que temos
um erro e deixe-me mostrar isso mais uma vez. Clique duas vezes.
Estamos nesta linha.
Você pode ver aqui.
E como essa linha não foi executada corretamente,
a destruição não foi executada corretamente solucionável, continua voando.
Esta é apenas uma nota lateral.
De qualquer forma, qual é o problema?
O problema é que estamos acessando a colisão, certo?
A colisão deve ser o inimigo porque estamos tentando acessar o controlador NMI.
Mas o problema é que agora acabamos de bater em uma parede,
e essa parede não tem o script inimigo nele. Interessante.
Então, como vamos salvar isso?
Bem, felizmente temos uma ferramenta muito, muito poderosa.
Deixe-me falar isso aqui.
Deixe-me limpar todos esses erros desagradáveis.
Temos uma ferramenta extremamente poderosa da qual ainda não falamos.
Se eu entrar nas camadas de edição, como vimos,
temos as camadas das camadas de física,
temos as camadas de classificação.
Também temos essa tag aqui.
E o que podemos fazer,
podemos marcar o inimigo,
foi uma etiqueta inimiga.
E sempre que estamos tentando verificar o controlador inimigo, antes de fazermos isso,
podemos criar uma condição que verifique se a etiqueta na colisão é inimiga,
então podemos ir em frente e danificá-la.
Se não for um inimigo ou o objeto que nos encaixamos não estiver marcado como inimigo,
então não podemos acessar o controlador inimigo.
Então deixe-me voltar aqui.
Deixe-me mostrar onde podemos criar adaga.
Podemos simplesmente clicar neste botão mais,
nomear a etiqueta, o que quisermos,
salvar isso, voltar para o inimigo.
E você pode ver aqui que podemos marcá-lo com uma tag que acabamos de criar.
Deixe-me voltar.
Exclua a pilha aqui.
Sim. Certo.
Também porque o inimigo foi marcado que pode desmarcar.
Não sei por que fiz isso.
Então lá vai você. Será removido desta lista na próxima vez que o projeto for carregado.
Ok, então isso foi um grande erro,
mas não se preocupe com isso porque agora é hora de
um desafio e seu desafio é marcar nossos inimigos.
Então, antes de tudo,
crie uma etiqueta inimiga como eu mostrei a você.
Certifique-se de marcar o inimigo dentro da etiqueta inimiga.
Antes de obter o controlador inimigo,
verifique se há uma condição se o objeto de colisão, para
que você já saiba qual é o objeto de colisão,
tem a etiqueta inimiga nele.
E eu recomendo que você passe pelo Google,
encontre uma maneira de verificar a tag e comparar a tag.
Se você quiser continuar sozinho, vá em frente e faça isso.
Se não, vou te dar uma pequena dica.
Você pode usar algo chamado the.com DAG,
ir conferir em cães Unity,
usar suas informações, fazer sua própria pesquisa.
Existe outra maneira de verificar a tag.
Eu recomendo que você o encontre.
Pause o vídeo agora mesmo e faça as compras.
Ei, bem-vindo de volta.
Como você se deu bem com isso?
Portanto, esta é a unidade de documentações, component.com, declaração do DAG.
Ele retorna um bool,
seja verdade ou não ou nenhum bool público.
Além disso, a tag compare é um bool e vamos
usá-la em nossa declaração if porque, como sabemos,
uma condição na declaração if é verdadeira ou falsa.
Assim, também podemos ver como ele é usado e é usado no Trigger Enter,
quão conveniente para nós.
Então, usamos esse outro,
eles chamaram de outro,
nós o temos como colisão.
É o mesmo, não se preocupe com isso.
Então, vamos ver como podemos fazer com isso aqui.
Então, antes de verificarmos uma colisão,
adicionei uma guia aqui.
Vou ver se a colisão que acabamos de bater na tag é inimiga.
E antes de fazermos isso,
devemos criar esse tipo que é o inimigo. Pressione Enter.
Então, vou me certificar de que escrevemos corretamente.
Então inimigo, e eu vou marcar nosso inimigo como inimigo.
Então agora aqui, se é um inimigo, então vamos seguir em
se é um inimigo,
frente e fazer a colisão e outros truques bacanas,
Este vídeo está cheio de truques bacanas.
Se você tiver apenas uma linha sob a condição if,
não precisará adicionar esses colchetes aqui.
Então, se você tiver apenas uma linha,
não precisará adicionar os colchetes se eu adicionar outra linha.
Por exemplo, o contratorpedeiro não faz parte da condição if.
Mesmo se eu pegar e colocá-lo aqui,
ainda não fará parte da condição.
E se você está um pouco confuso com isso, não se preocupe.
Você pode adicionar seus próprios colchetes.
Este é apenas um pequeno teste.
Você pode até adicionar um comentário aqui para dizer que isso é o que acontece.
Então, vou salvar isso agora.
E somente se a colisão um inimigo marcar nele.
Bem, chamamos o controlador inimigo e damos a ele.
Vamos testar isso.
Vou executar o jogo e vou começar a atirar nas paredes.
E lá vai você, você pode ver que não temos erros.
Se eu atirar no inimigo ,
verei o dano que o inimigo sofreu.
Lá vai você. Você pode ver que está em 40.
Vou atirar nele mais três vezes,
então ele se torna 30, 20, 10.
E finalmente, vou atirar nele pela última vez e ele será destruído sem erros.
Então, espero que você goste,
espero que esteja cometendo todas as mudanças que estamos fazendo.
É muito importante.
Às vezes farei isso fora do reino do vídeo.
E com isso dito, espero que você goste.
Se você está curtindo este curso, por favor,
deixe-me um comentário.
Isso me ajuda muito.
Ele permite que todos saibam que este é um bom curso.
Portanto, certifique-se de me deixar um comentário.
Muito obrigado por assistir.
Vejo você no próximo vídeo, onde estaremos tornando
a profundidade de nossos inimigos um pouco mais brutal.
Então, verei você.