Bem-vindo de volta meus colegas desenvolvedores de jogos para um novo vídeo extremamente longo.
Sei que você está cansado disso.
Mas, como sempre, vale a pena porque aprendemos muito.
Primeiro de tudo, criamos um inimigo.
Adicionamos um intervalo a ele.
Adicionamos uma maneira de desenhar esse intervalo.
E também executamos o jogo. Podemos atirar no inimigo.
Obviamente, ele não morre por enquanto,
mas podemos entrar no intervalo.
Você pode ver aqui que o jogador está no intervalo Chase.
Ele está sendo enviado toda vez.
Se sairmos dessa pequena bolha, lá vai você,
você vê que o jogador está fora do alcance.
Então, não vamos perder mais tempo.
E vamos começar com esse vídeo longo.
Oh, então é hora de alguns inimigos.
Vamos começar.
A primeira coisa que vamos fazer é
mouse para criar um objeto de jogo vazio.
Certifique-se de que sua posição esteja redefinida.
E a rotação e a escala e et cetera.
E vamos chamar isso de inimigo por enquanto até decidirmos qual inimigo vai querer usar.
A próxima coisa que precisaremos fazer é que precisemos entrar nos sprites.
Vamos clicar com o botão direito do mouse em criar uma pasta aqui para os inimigos.
E dentro dos inimigos entrará nos recursos e
vamos arrastar o monstro e as criaturas.
E vamos colocá-lo aqui.
Então, vamos esperar que tudo seja importado. Vamos abrir isso.
E como você pode ver, temos quatro tipos de inimigos
que baixei de artes de jogos abertos.
Claro, como sempre,
você pode encontrar seus próprios inimigos.
Esses são os que usei e eles estarão no link, nos recursos.
E o que devo escolher?
Acho que vou escolher quatro agora,
o, vamos ver qual deles.
Eu realmente não pensei nisso.
Os inimigos.
Vamos apenas escolher o esqueleto e ser muito genérico.
Então, como você pode ver, temos um ataque de três morte ou et cetera, et cetera.
Então, eu só vou entrar no ocioso.
Vou fazer com que seja aplicado vários Sprite Editor.
E vamos seguir em frente e cortá-lo,
não automaticamente, mas por um tamanho de grade.
E se você estava um pouco confuso com o que fiz da última vez,
eu só verifico o comprimento de todo o sprite.
Então são 600 e eu divido por quantos esqueletos temos.
Então, temos quatro ou uma única linha,
então dividida por quatro.
Isso significa que é 150 por 150, como sempre.
Por algum motivo, estou surpreso.
Então vamos para a emenda, fatia.
Splice, pense que isso é emenda de filme, claro, fatia.
Lá vamos nós. Aplicar.
Agora temos nossos pequenos esqueletos aqui.
Vou arrastá-lo.
E a cena, whoa,
é um esqueleto enorme, não é?
Isso é ironia.
Se você não o pegou.
De qualquer forma, faremos 50. Lá vamos nós.
Ainda não podemos vê-lo porque precisamos ter e aplicar.
Vamos seguir em frente e criar uma camada aqui que será o inimigo ou os inimigos.
E vou definir as balas para renderizar na frente do
inimigo e também o jogador para renderizar um enredo do inimigo.
E vamos em frente e definir o inimigo aqui.
Então lá vai você.
Ainda é um inimigo muito pequeno.
Vamos salvar isso. Vamos torná-lo um pouco maior.
Então, um ocioso 50, vamos fazê-los 32.
Aplique isso.
Talvez ainda maior.
Vamos fazê-lo 16. Então, 16.
Sim. Lá vamos nós.
Certo.
Isso é muito grande.
Quando D talvez 20.
Sim, acho que 20 é bom o suficiente.
Isso mudou esses dois pontos. Veja se isso ajuda.
Sim, lá vamos nós. Ele parece muito melhor,
ainda um pouco granulado,
mas não se preocupa com isso.
Nós o temos de graça.
De qualquer forma.
Vamos ver, este é o corpo.
Este seria o corpo.
E eu vou cuidar do objeto do jogo inimigo.
Então agora temos o inimigo aqui e o corpo.
Vamos apenas defini-lo para 00.
A posição é relativa,
claro para os objetos do jogo inimigo ou agora nos movemos
usando o inimigo e você pode ver que ele é renderizado atrás do jogador,
atrás da arma e ele também deve ser renderizado atrás das balas. Vá para a direita.
Agora que temos isso,
próxima coisa que precisamos fazer é obviamente em
algum comportamento ou uma maneira de controlar o comportamento de nosso inimigo.
Então, vamos entrar nos ativos, nos scripts, vamos clicar com o
botão direito do mouse aqui,
criar uma nova pasta talvez,
e vamos chamá-la de inimigos.
Entre.
Talvez também crie um aqui para o jogador,
que será o controlador do jogador.
E vamos ver, também criaremos um para as balas e o tempo agora.
Então crie uma nova pasta para as balas.
E vamos movê-los para a bala.
Por quê?
Porque temos a bala,
o controlador de bala do jogador e o efeito de impacto.
Então e dentro dos inimigos clicará com o botão direito do mouse,
criará um novo script C Sharp,
e nós o chamaremos
controlador E EMI pressionado Enter.
Aguarde que isso seja compilado. Certo, ótimo.
E agora no inimigo,
podemos ir em frente e adicionar um componente que é o controlador inimigo.
E vamos abrir o roteiro.
Certo? Então, algo que você deve ter notado que todas as guias desapareceram.
Isso não é porque eu os fechei,
é porque mudamos o diretório deles.
Então, movemos, por exemplo,
o controlador do player dos scripts de pasta para os scripts do player da pasta.
É por isso que não o temos,
mas não se preocupe, ainda assim,
se clicarmos duas vezes, podemos abri-la facilmente.
Vamos continuar.
O que precisamos aqui dentro do controlador NMI?
Embora precisemos, em primeiro lugar, de
uma variável que manterá em controle a velocidade dos inimigos.
E precisaremos de uma variável que representará o corpo rígido dos inimigos.
Então, vou fazer exatamente isso.
São coisas muito simples.
Não há necessidade de muita explicação.
Este é um campo serializado,
um flutuador e a velocidade inimiga.
E outra variável que será um corpo rígido privado 2D.
E acabei de me lembrar.
E EMI, corpo rígido.
O corpo não precisa ser capital.
Salve isso.
E eu só me lembro que esquecemos obviamente
de adicionar algumas coisas ao inimigo, que está aqui.
Vamos adicionar um componente que será um colisor de caixa.
E vamos prosseguir e fazê-lo.
Então, talvez sem o escudo,
geralmente é melhor manter os coliders da caixa um pouco menores do que o corpo real.
Isso fará com que o jogador do seu jogo quisesse se tornar mais preciso.
E também podemos adicionar a sombra, a propósito,
sob o inimigo, o que é uma boa ideia.
Vou adicionar outro componente,
que será o corpo rígido 2D.
Obviamente, vamos fazer a escala de gravidade 0.
Salve isso, e fecharemos os dois, ambos
para baixo.
Mova o script sob os dois componentes,
ou podemos deixá-lo lá.
Qual é a velocidade do inimigo?
Qual é a velocidade do jogador primeiro, ok,
é então, vamos fazer a velocidade inimiga 5.5 disso.
Salve isso. Certo, ótimo.
Então agora temos o inimigo.
Temos um corpo rígido e um colisor nele
para que possamos atirar nele e interagir com ele fisicamente.
Agora, o que você quer fazer é começar a mover o inimigo em direção ao jogador,
mas não o tempo todo,
apenas quando o jogador chegar perto o suficiente.
Então, precisamos de uma variável para o alcance em
que o jogador estará em uma ordem para que o inimigo pare de persegui-lo.
E também precisamos da direção em que o inimigo se moverá.
Então, primeiro,
vamos criar um campo serializado, que será um
flutuador com o jogador ou o alcance da perseguição do jogador, vamos chamá-lo de alcance
das cadeias de jogadores.
Então, o alcance que o jogador deveria começar a persegui-lo.
E criaremos um fator privado três.
E esta será a direção para se mover na direção para mover e salvar isso.
Certo, ótimo.
Vamos voltar aqui.
E qual é o alcance da perseguição? E você sabe o quê?
Vamos mantê-lo para mais tarde.
E vou te mostrar uma maneira muito bacana de como podemos desenhar.
Então, como vamos saber o que a perseguição varia?
Assim, posso, por exemplo,
começar a fazer o intervalo de alteração cinco ou dez, ou 21.
Mas o que isso significa?
O que significa o alcance da perseguição aqui.
Então, temos que calcular todas as caixinhas
aqui para determinar o quão longe ou próximo está declarar.
Bem, claro que não.
O que vamos fazer é desenhar
um círculo aqui que só aparecerá no modo de cena,
mas não dentro do modo de jogo.
Como vamos fazer isso?
Se voltarmos e aqui temos algo chamado gizmos de sorteio.
E você pode encontrar isso na documentação do Unity.
E aqui vamos,
você pode ver que temos algo sob o comportamento mono,
que é OnDraw gizmo select.
E você pode ver aqui implementar o OnDraw é selecionado para
desenhar o objeto gizmo selecionado.
Observe o que dissemos, se o objeto for selecionado e você puder ver aqui,
temos o teste de aparelhos e como podemos usá-lo.
Então, criamos um aparelho OnDraw vazio.
E aqui podemos criar a cor do gizmo para selecionarmos qual cor queremos ser desenhada.
E o que queremos desenhar,
que é a esfera.
Assim, podemos clicar na troposfera e podemos vê-la aqui,
que é o público atrai medo,
desenha uma esfera sólida com centro e raio.
Então, vamos implementar isso.
E use-o para desenhar nosso próprio círculo ou esfera ao redor do inimigo e conhecer o alcance dele.
E se olharmos atentamente para o método e aqui podemos ver que atrai o medo,
precisamos de um centro e precisamos de um raio.
Então, qual deve ser o raio?
Pense nisso enquanto criamos esse método.
Então, aqui, vamos dizer sobre os aparelhos de desenho selecionados.
E primeiro vamos escolher uma cor.
Então, será a cor do ponto de gizmos
e será igual à cor, digamos vermelho.
Salve isso.
Em seguida, vamos acessar o gizmos dot Draw wire, esfera.
Então, por que o olhar de esfera que desenha uma esfera de wireframe com um centro e o raio.
Então, é um pouco diferente da esfera,
mas como estamos jogando em 2D,
não precisamos desenhar toda a esfera,
só precisamos do fio ao redor dela.
E vamos ver o que deveria ser o centro.
O centro obviamente deve ser as posições de ponto de transformação ou
o transporte é o transporte do objeto que tem o controlador inimigo.
Sei que já disse isso um milhão de vezes,
mas para aqueles que ainda estão confusos,
sei que fiquei um pouco confuso quando comecei a fazer
isso há alguns anos, há muitos anos.
E eu me lembro, então de onde isso vem?
Bem, é a transformação do objeto que tem o controlador inimigo nele,
o que significa que é este, inimigo V.
Este é o transformador falando de volta aqui.
Qual é o raio?
Bem, você já pensou nisso?
Qual deve ser o raio?
Obviamente, é o alcance da perseguição do jogador.
Vamos salvar isso.
Vamos voltar para a Unity.
E bem, enquanto o círculo que você pode estar perguntando, bem,
se você se lembrar de alguns vídeos atrás, desligamos os aparelhos.
Talvez você já tenha visto,
você não notou, mas se clicarmos nele, lá vamos nós.
E por que o desligamos?
Porque tínhamos essa câmera e ícone irritante da câmera.
O que podemos fazer é abrir os aparelhos.
Você pode ver que podemos desmarcar muitas coisas aqui,
mas uma das mais importantes é que podemos fazer com que esses ícones sejam um pouco menores.
Então lá vai você.
Não vemos mais a câmera irritante, correto?
Então olhe para aquele grande e enorme círculo.
Vamos torná-lo um pouco menor.
E você pode ver que ele muda imediatamente.
Vou fazer isso sim grande.
Vou colocar o jogador lá.
E a próxima coisa que precisamos fazer é calcular a distância entre o
jogador e o inimigo e ver se é menor que o alcance.
Se for menor, podemos começar a perseguir o jogador.
Se não for menor que,
não perseguimos o jogador.
Então, qual é o primeiro passo a fazer?
Bem, temos o alcance,
temos a posição de transformação do inimigo.
A próxima coisa que precisamos é uma referência ao jogador.
Como vamos obter a referência do jogador?
Bem, primeiro precisamos entender um método que vou mostrar a você,
que é o ponto objeto encontrar objetos do tipo.
E o que isso faz,
o objeto t significa que depende do objeto que você está procurando.
Então, quando você encontra o objeto,
d se torna esse tipo de objeto.
Portanto, o objeto, o primeiro ato de objeto carregado que corresponde ao tipo específico.
Portanto, ele retorna o primeiro objeto carregado dos tipos de tipo ou você pode dar seu tipo a ele.
E se olharmos aqui,
podemos ver alguns exemplos.
Então, digamos que queremos encontrar o renderizador Canvas.
Se você não sabe o que é o renderizador Canvas,
não se preocupe, vamos examiná-lo mais tarde.
Mas, por enquanto, veja o renderizador Canvas.
Criamos uma variável de pipe renderizador de tela com o nome Canvas,
e usamos objeto finito do tipo e obtemos a renderização de tela.
Então, agora temos uma referência a ele.
E como só temos um jogador,
podemos usar isso.
Se tivéssemos vários jogadores,
não poderíamos ter porque,
bem, obviamente, encontramos apenas o primeiro ato de um.
Então, procure esse método,
encontre-o, estude, entenda.
E então você terá que fazer esse desafio.
Você precisará encontrar o objeto do jogador.
Portanto, crie uma variável do tipo transformada para representar o jogador que queremos
perseguir e comece a usar encontrar objetos do tipo 2, encontre o jogador.
O tipo deve ser o controlador do jogador.
Por quê? Porque precisamos encontrar algum tipo específico de jogador.
Então, como identificamos o jogador?
Ele é como todos os outros objetos.
O que o torna único?
Não é apenas o nome que você pode encontrar através do nome, do corpo ou do ligado.
Precisamos usar algo específico.
E isso é algo específico é o script do controlador do player.
É por isso que o tipo de objeto que você deseja encontrar é o controlador do player.
E, finalmente, use a transformação de pontos no objeto que você encontrar e
atribuí-lo à variável que criamos, transformação de pontos y.
Você deve saber disso porque o tipo que vamos criar é a transformação.
Por que ela se transforma?
Bem, porque queremos obter a distância.
Como conseguimos a distância?
Bem, obviamente porque é uma transformação.
Então, pause o vídeo agora mesmo.
Vá fazer o desafio.
Ok, então primeiro, primeiro,
vamos criar uma transformação privada e o jogador a perseguir.
Agora, dentro do início,
vamos dizer que o jogador a perseguir é igual a encontrar objetos do tipo.
E o tipo que estamos procurando é o controlador do jogador.
E quando o encontrarmos porque declarado de dois Chase como uma transformação,
vamos acessar a transformação imediatamente de mim.
Então, espero que você tenha feito o desafio.
Espero que não tenha sido muito difícil.
Eu sei que havia alguns truques aqui,
mesmo que seja a primeira vez que você usa encontrar objeto do tipo,
tenho certeza de que você era pelo menos capaz
de fazer essa parte se você não pudesse ter descoberto isso,
não se preocupe sobre isso era o devido tempo, vai entender tudo.
Mas agora, o próximo passo é seguir em frente e calcular a distância.
Então, vou criar antes de tudo, uma declaração if.
E então vou escrever o vetor 3 pontos.
E você pode ver que temos um método aqui que é a distância e
ele retorna a distância entre a e B.
Então vamos abrir isso.
O que é o a?
Vai ser a posição do ponto de transformação. E o que é o B?
Será o jogador perseguir a posição dos pontos.
Lá vai você.
E qual é a condição se a distância entre a posição transformada,
que é o inimigo e o jogador a perseguir,
que é o jogador e é menor que o alcance da perseguição do jogador V.
Então vamos mover nosso inimigo.
Mas isso é para outro vídeo.
Por enquanto, vou usar o log de pontos de depuração.
E vou dizer que o jogador está no alcance do Chase.
E uma declaração else que diremos que duplicar essa linha, mova-a para baixo.
E vai dizer que o
jogador fora do Chase está fora do alcance da perseguição.
Salve isso de volta em nosso jogo.
Vamos saber o que eu só quero fazer alguma coisa.
Vou tornar isso público apenas por enquanto, só para
que possamos ver o que acontece.
Então você notará que no inimigo agora
temos um jogador para perseguir, mas não há nada.
Não vamos adicionar nada.
Vamos apenas executar o jogo. Lá vai você.
Você pode ver que agora o jogador da condenação, se eu clicar nele,
há a referência e agora o esqueleto,
nosso inimigo tem uma referência ao jogador.
Posso até atirar nele.
Então, vou para o console.
O que é isso falso?
Vamos clicar duas vezes.
Certo, então este jogador e está fora do alcance da perseguição.
Deixe-me definir a janela do jogo ao lado
da cena quando aqueles para que possamos ver claramente o círculo aqui.
Então, se eu chegar perto o suficiente,
lá vamos nós, você pode ver que agora o jogador está no alcance do Chase.
Se eu sair, o jogador está fora do alcance.
Se eu for jogar como NJ estranho,
lá vai você, tudo está funcionando perfeitamente bem.
Então, espero que você goste.
E o próximo vídeo estará realmente movendo nosso inimigo,
não apenas imprimindo algo para a depuração, para o log.
Deixe-me remover este log de pontos de depuração.
Salve isso.
Deixe-me tornar isso privado novamente porque não precisamos vê-lo.
Eu só queria demonstrar.
Não se esqueça de preparar todos os seus arquivos.
E antes de ir,
o que eu também queria contar a todos vocês.
Espero que você goste.
Vejo você na próxima vez.