Bem-vindo de volta Meus desenvolvedores de jogos favoritos para um novo vídeo muito longo.
E este, criamos animações para o sangue.
Aprendemos sobre matrizes.
E agora você pode ver na hierarquia quando atiramos em nosso inimigo,
você pode ver que temos diferentes tipos de sangue sendo instanciados.
Então, por exemplo, agora o sangue para então nós temos o sangue,
então temos os três.
Então, o que está acontecendo?
Temos muitos Bloods e eles estão instanciando
de forma aleatória porque usamos uma matriz.
Então, não vamos perder mais tempo e vamos começar.
Então, é hora de adicionar algum efeito de rebanho aos nossos inimigos.
Vamos em frente e, antes de tudo,
criar todos esses efeitos.
Então eu vou entrar nos sprites,
temos o respingo de sangue.
Vou criar uma pasta para o respingo de impacto sanguíneo.
Talvez devêssemos ter chamado isso de morte, mas não se preocupe,
vamos chamar isso de respingos de impacto.
Então sabemos que a França e eu vamos entrar nos
recursos e você pode ver que eu lhe forneci mais sangue.
Você pode usá-los e cortá-los ou usar esses cinco aqui.
Então, vamos escolher todos eles e arrastá-los para a pasta aqui.
Por que estamos usando todos eles?
Porque queremos ter um pouco de diversificação entre o 1D 2D,
3D e et cetera.
Então você pode ver que cada um deles é um pouco diferente dos outros.
Então, vou salvar isso e vou criar as animações.
E é muito fácil, eu acho.
Então, vou fazer com e usar a magia da edição para fazer isso em 1 segundo.
Então, o k, bem-vindo de volta.
Então, como você conseguiu tudo isso?
Deixe-me mostrar o que eu fiz.
Então, antes de tudo, criei cinco sangue para o
55 do impacto sanguíneo que temos agora eles não são muito diferentes uns dos outros,
mas há uma pequena diferença.
Então, quando executamos isso,
você pode ver que este é o primeiro.
Este é o segundo que é um pouco diferente.
O primeiro é um pouco mais espirituoso.
O terceiro, vamos ver.
Você pode ver que ele cai mais do que o segundo.
Então você pode ver que estes são os dois.
Este é três.
Está um pouco mais caindo.
Não tenho certeza do que chamá-lo.
O quarto, você pode ver que é muito pequeno e muito concentrado.
E o quinto que você pode ver é muito GUI.
Então, o que vamos fazer?
Vamos salvar tudo isso.
Vou entrar nos Prefabs aqui e vou criar uma pasta para
os salpicos de cílios e vou arrastar o sangue 1, 2,
3, 4 e 5.
Vou salvar tudo isso.
Vou excluí-los da hierarquia.
E agora temos o sangue aqui.
Agora acho que provavelmente teremos que destruí-los e apenas um pouco,
mas por enquanto, não se preocupe com isso.
Vamos corrigir isso quando o problema surgir.
Então, o que vamos fazer?
Queremos instanciar esses sangue toda vez que o inimigo se machuca?
E a maneira como fazemos isso é antes de tudo,
obtendo obviamente uma referência a ele, assim como fizemos com o respingo de morte.
Então, isso será chamado de efeito de dano.
Para o dano.
O efeito de dano.
Vamos apenas mantê-lo nisso ou você pode chamar o dano de respingos de sangue o que quiser.
E agora o que vamos fazer é simplesmente instanciá-lo
toda vez que nos machucarmos.
Então, aqui em baixo, vamos duplicar isso.
Mova um pouco para cima.
E se você se lembra de como duplicamos o Control D,
como movemos isso muito bem pressionando Alt e usando as teclas de seta.
Então agora instanciamos v.
O que devemos instanciar o efeito de dano?
E está na posição de transformação do.
Então, vou salvar tudo isso.
Vou voltar ao nosso jogo.
Vou escolher o inimigo aqui, temos o efeito prejudicial,
e vamos escolher um azul.
Salve isso.
E agora vamos executar o jogo.
E agora vou atirar em nosso inimigo.
Lá vamos nós. Você pode ver o sangue.
Obviamente, está em repetição.
Ok, então agora precisamos começar a instanciar esses efeitos toda vez que o inimigo se machuca.
Então, onde estamos instanciando o efeito ou os efeitos de impacto das balas?
Bem, estamos instanciando-os no controlador de bala de camada.
Então você pode ver que é aqui que os instanciamos.
Agora, o que queremos fazer sempre que estamos batendo em uma parede,
temos esse efeito de impacto de bala.
Mas sempre que estamos atingindo um inimigo,
queremos ter algum tipo de efeito de carga.
Então, vou duplicar essa linha aqui.
E vou chamar isso de maduro.
Eu chamo isso de fato de dano.
Porque isso significa que haverá algum tipo de dano
quando tivermos danos significa que há sangue significa que há algo diferente.
E o que faremos aqui é que toda vez que atingirmos um inimigo,
vou abrir os parênteses.
E vou acrescentar aqui que instanciamos e instanciamos
o efeito de dano na posição de transformação e na rotação da transformação.
Mas o que não queremos ter como quando estamos
atingindo o inimigo e ainda instanciamos um efeito de bala.
Então, o que vou fazer é que vou fazer outra declaração aqui.
E vou mover toda essa linha para baixo para aquela declaração.
Como estou fazendo isso?
Mantendo pressionada Alt e usando as teclas de seta em uma das linhas que eu quero mover.
Então, agora o que acontece quando a bala
impacta ou tem uma colisão e essa colisão tem uma etiqueta de inimigo,
então teremos esse respingo de sangue
e acessaremos o controlador animal e causaremos dano.
Se não, se não for o inimigo,
que significa que estamos batendo,
não sei o que é.
Vamos ter o efeito de bala e costas.
Então, vou salvar isso.
Vou voltar aqui.
E aqui, vou procurar minha bala nos prefabs, prefabs
V bilayer bala aqui,
devemos ter o jogador,
mas eu deveria ter o efeito de dano.
Vou bloquear isso no inspetor para
que você tenha esse pequeno login aqui, você pode clicar nele.
Agora, seja lá o que você pressionar,
você não muda do inspetor do livro de jogadores.
E isso é útil. Por quê? Porque agora podemos abrir este arquivo,
escolher o sangue,
e vamos adicioná-lo aqui no dano de fato,
salvar tudo isso, executar o jogo.
E agora devemos ver que quando estamos atirando na parede, temos esse impacto.
Quando atiramos em um inimigo.
Lá vamos nós.
Temos o sangue tocando repetidamente,
o que significa que teremos que mudar as animações.
E não lhe disse que criei animações.
Pode simplesmente remover isso.
E deixe-me excluir esta pasta.
Eu tive isso por engano.
Então, respire um, remova isso.
Splash para remover isso do loop do, opa,
eu o liguei por engano. Desligue-o.
Desligue. Então lá vai você.
Nós temos todas as animações não em loop, ok, salve isso,
execute o jogo agora quando devemos o inimigo,
devemos ver o sangue respingo de sangue um.
Ok, então isso é bom e elegante e tudo está bom.
Mas temos cinco fatos por um motivo.
Como vamos garantir que um deles seja renderizado?
E não só isso, como vamos garantir que
um número aleatório deles seja renderizado?
Então, precisamos de vários objetos de sangue aqui.
Agora, o que podemos fazer é simplesmente ir em frente e duplicar isso cinco vezes.
Dano 123, etc.
Portanto, temos cinco danos que podemos chamar aleatoriamente.
Essa é uma solução, mas não é a solução ideal porque, por exemplo,
digamos que queremos ter talvez 17 efeitos de dano.
Temos que ir em frente e criar 17 variáveis?
Bem, você pode, mas antes de tudo, é muito pesado.
Em segundo lugar, não é uma boa maneira de usar os recursos.
Qual é uma boa maneira de usar recursos como criar algo chamado array?
Então, o que é uma matriz?
Uma matriz permite armazenar vários objetos do mesmo tipo em uma única variável.
Assim, podemos ir em frente e criar um int.
Por exemplo, uma série de números inteiros,
por exemplo, que é o número de inimigos.
Então eu posso armazenar, por exemplo,
4, 6, 11 e 71.
E cada um desses pequenos dados está na matriz.
Você pode ver que temos antes de tudo,
o tipo como uma variável,
mas a única diferença, adicionamos esses dois colchetes.
Temos o nome e temos os valores.
E cada um desses valores é ou tem um índice dentro.
Por exemplo, os quatro são indexados em 0.
E lembre-se que sempre começamos a indexar em 0, não 10.
Os seis estão no índice um,
o 11 está no índice dois
e os três estão no índice.
Quero dizer, 71 está no índice 3 e podemos ter quantos quisermos.
Então, agora que você tem um pouco de compreensão do que são arrays,
e mais uma coisa podemos determinar o comprimento de uma matriz.
Por exemplo, o comprimento dessa matriz é quatro porque temos quatro valores.
Então, fora do caminho, essa pequena explicação,
vamos tentar implementá-la um pouco e você pode ver como isso funciona.
Então, vou voltar e unir ou, na verdade, não aqui.
E como convertemos esse efeito de dano em uma matriz?
Simplesmente adicionamos esses dois colchetes.
E agora acho apropriado nomear isso não efeito de dano,
mas efeitos de dano com um S no final,
porque agora é plural.
Então, usaremos nossa útil ferramenta de controle ou, ou,
e simplesmente adicionaremos um S no final, pressione Enter.
Agora, o efeito de dano aqui é diferente,
mas você pode ver que a instanciação agora está errada.
Por quê? Porque estamos tentando instanciar uma série de efeitos que não funciona bem,
mas vamos consertar isso, ou,
na verdade, você vai consertar isso mais tarde no desafio.
Primeiro de tudo, vamos adicionar todos os danos e ver como ele fica no inspetor.
Então, se eu for para a minha bala,
na bala prefabs player,
você pode ver aqui, onde está?
Então, algo está errado.
Qual é o problema?
E o console? Vamos clicar duas vezes e ver.
Oh, então deixe-me apenas comentar isso.
Salve isso às vezes quando você tiver um erro,
o script não é montado corretamente.
Então agora que resolvemos esse problema,
e podemos ver aqui que temos efeitos de dano,
não mais um único elemento,
mas podemos abri-lo e ter uma lista de elementos.
O que podemos fazer é dizer que o tamanho da matriz é dois. Pressione enter.
Agora temos dois elementos,
ou podemos fazê-lo à moda antiga e acertar a vantagem aqui e adicionar um objeto.
Mas vou te mostrar um truque ainda bacana.
Vou trancar o inspetor aqui.
Vou aos meus prefabs.
Vou clicar no primeiro,
manter pressionado, mudar, clicar no último.
Então, eu tenho todos selecionados e vou arrastá-los para o efeito prejudicial.
E voila, agora você tem por que eu usei água?
Agora temos os 50 sangrentos e você pode ver os elementos numerados de 0,
1, 2, 3 e 4.
Agora, o próximo passo é instanciar um deles aleatoriamente.
E posso mostrar a vocês,
antes de tudo, isso será um desafio.
Não tenho certeza de qual devo mostrar primeiro.
Deixe-me antes de tudo, mostrar-lhe isso.
Então, temos algo chamado intervalo aleatório,
que retorna um número aleatório.
Vá em frente, olhe para cima.
Agora é hora do seu desafio.
E seu desafio é criar um efeito aleatório.
Portanto, número um, crie um splash aleatório de 0
como o valor mínimo e o comprimento da matriz como o valor máximo.
Então agora você está um pouco confuso.
o que Michael está falando?
Mais uma vez, voltamos para este.
O mínimo, o máximo.
Lá vai você. Use isso, procure por ele.
De volta aqui.
Atribua esse valor a uma variável inteira que você criará localmente.
Portanto, crie um inteiro aleatório,
atribua a ele um número aleatório.
Procure latrinas aleatórias 0.
Ok, então eu adicionei isso.
E, finalmente, vou te dar uma dica.
Se você não quiser a dica,
é sobre como obtemos o comprimento da matriz.
Vou te dar a dica. Caso contrário,
pause o vídeo, vá para o desafio.
Você quer ter a dica, use o comprimento do ponto para obter o comprimento da matriz.
Você pode até procurar alguns exemplos são não,
isso é um desafio um pouco difícil.
Eu adicionaria uma escala de um a 10 como iniciante,
isso é um 10 porque antes de tudo,
você acabou de aprender arrays.
Em segundo lugar, você está usando aleatoriamente.
Sei que é difícil.
Aproveite seu tempo, pause o vídeo,
use suas habilidades de resolução de problemas,
tudo o que você adquiriu
e não se preocupe com isso quando terminar o desafio.
Se você não sabe como fazer isso,
farei isso na sua frente, mas tente.
mais importante, pelo menos dê cinco minutos para tentar.
Então, pause o vídeo agora mesmo e faça o seu melhor e o caldeu.
Certo, bem-vindo de volta.
Então, sempre que atingirmos um inimigo,
o que vamos fazer é criar uma variável aleatória e localmente,
então localmente significa dentro daqui,
toda vez que atingimos um inimigo,
vou dizer que temos um número inteiro variável,
que será o splatter selecionado.
E será igual a um intervalo aleatório.
Assim como temos nos exemplos, e a
documentação do Unity vai estar entre 0 e o respingo de morte ou não,
o que chamamos, parece que o dano afeta.
O dano afeta o comprimento do ponto.
Salve isso.
Então, agora o que acontece aqui,
temos esse número inteiro.
É igual a um intervalo aleatório.
E você pode ver aqui que temos o mínimo.
Então, por que é 0? Porque queremos escolher
um número aleatório da matriz que temos aqui.
E o primeiro índice é 0,
e o último índice será o comprimento do dano.
Mas há algo muito importante que eu quero apontar para você.
E se olharmos aqui para a explicação,
você pode ver que o mínimo é inclusivo enquanto o máximo é exclusivo.
O que isso significa? Inclusive?
Isso significa que podemos escolher um aleatório de 0 ao máximo.
Então 0 está dentro.
0 pode ser um desses números aleatórios.
Mas o máximo, que é o comprimento, não pode.
E isso é importante porque a indexação em uma matriz,
se escolhermos o comprimento,
o comprimento é sempre maior que o último índice.
Porque se eu voltar e o exemplo aqui, deixe-me mostrar-lhe.
Então, vamos dizer qual é o comprimento de toda essa matriz?
São quatro porque temos quatro pontos.
Mas se eu tentar acessar o quarto número nesta matriz,
receberei um erro porque temos o índice 0, 1, 2,
3 se eu tentar acessar o quarto, então,
pois não há nada,
recebo um erro e começo a chorar.
Não necessariamente, mas espero que você consiga o ponto.
A próxima coisa que vamos fazer é que queremos instanciar.
Então, agora que temos nosso número aleatório,
o que podemos fazer entre os efeitos,
posso abrir os colchetes e posso usar o splatter selecionado aleatório.
Então agora eu tenho um número aleatório que está entre 0 e o comprimento menos um,
obviamente porque é exclusivo.
E agora posso instanciar os efeitos de dano
ou um dos efeitos de dano aleatoriamente usando esse número.
Então eu poderia ter dito o 0 V1,
mas eu selecionei o respingo aleatório.
Então, vamos salvar isso.
Espero que você entenda tudo.
Se não, basta dar uma outra olhada nele,
talvez repita o vídeo, entenda tudo.
Tentei ser o mais detalhado possível enquanto era chato.
Acho que esse é um dos vídeos mais longos, mas não se preocupe.
Vou entrar no meu jogo.
Vamos remover isso aqui é como o inimigo.
E a propósito,
também me certifiquei de que todo o sangue que você pode ver aqui,
a camada de triagem como inimigo.
Então você pode vê-lo. E onde está o inimigo?
Vou dar a ele mil ou 10 mil de saúde
só para que possamos ver corretamente todos os respingos de sangue.
Então eu vou chegar lá, mas perto,
vou filmar 12345.
Então lá vai você.
Você pode ver que algo não está completamente certo,
então eu vou atirar.
E qual é o problema com este caso 1, 0?
Então acabei de encontrar o problema e o sangue 5 que adicionei aqui, o sangue.
Olhe quando você reproduz a animação,
a última é um ponto vermelho.
Então, o que vou fazer,
vou remover o último. E lá vai você.
Agora, só temos isso quando o sangue termina nas lanças.
Salve tudo isso.
E deixe-me escolher a lua.
O sangue 5 e um vivo mudam.
Exclua-o novamente na bala. Deixe-me ver.
Talvez porque mudamos algo, talvez prefabs bala.
Certo. Ainda trabalhando, salve isso,
volte ao nosso jogo.
Obviamente, precisaremos remover tudo isso para que um sapato,
o inimigo, vamos ver.
Temos sangue diferente.
Não, ainda está lá por algum motivo.
Por que isso? É muito chato.
Certo. Então descobri que o sangue
também tem seu último quadro como esses pontos vermelhos irritantes.
Então, vou excluí-lo e salvá-lo.
Estou excluindo-o imediatamente dentro do pré-fabricado.
Então eu simplesmente vou para o pré-fabricado,
clique duas vezes nos três.
Vamos ver se este também tem o pequeno ponto vermelho irritante que você sobe.
Ok, então lá vai você.
Ele também economiza isso e sangue para ampliar e ver a animação.
Certo, outro trabalho sangrento.
Este vídeo está ficando fora de controle.
Então lá vamos nós,
o último, também excluímos isso.
E uma coisa que notei,
quero escolher todos os prefabs e me certificar de que todas as
posições deles estão em 0 para que eles não sejam instanciados.
E algum lugar estranho.
De qualquer forma, de volta ao nosso jogo.
Espero que desta vez tudo esteja funcionando perfeitamente.
Então, vou correr o jogo e vou atirar no inimigo.
Lá vai você.
Este é o sangue grosso.
Açuque-os novamente.
vez, é um tipo diferente de sangue. Você pode ver que ele está bloqueado.
Três.
Sangue por Sangue um.
Lá vai você. Você pode simplificar para novamente, sangue um.
Então, como você pode ver, sempre que estamos atirando no inimigo,
temos diferentes tipos de sangue que estão sendo instanciados.
Então você pode ver que é um número aleatório sendo disparado.
Então, espero que você tenha gostado.
Obviamente, há algumas coisas que precisaremos consertar
com nosso sangue não sendo destruído no final,
podemos encontrar uma maneira diferente de consertá-lo uma vez que aprendemos algumas ferramentas extras,
ou talvez possamos removê-las usando o eventos e nossas animações,
o que também é muito útil.
Então, espero que tenha gostado,
espero que esteja curtindo este curso.
Espero que você não esteja sendo um pouco desmotivado pela duração de
alguns dos vídeos porque eu entro em alguns detalhes.
Espero que você goste do fato de eu cometer erros e mantê-los aqui para que possamos
consertá-los juntos e me deixar um comentário se você estiver gostando.
Sei que já disse isso antes.
Talvez eu direi algumas vezes, então certifique-se de
fazer a revisão para que você não precise mais ouvi-la.
E certifique-se, é claro, fazer os commits.
Vejo você no próximo vídeo em que daremos ao inimigo e a capacidade de atirar em nós.
Então, atualmente, ele é muito fraco.
Queremos dar a ele uma maneira de se defender.
Então, vejo você.