No vídeo anterior, escrevemos The Idol and the Patrol States.
Agora precisamos criar o A. I. classe, que aqui colocaremos em guarda para que ele seja capaz de
fazer a transição através dos estados.
Portanto, vamos clicar com o botão direito do mouse e criar um roteiro afiado em C chamado AI e vamos abri-lo.
Você vai se surpreender o quão curto é este código?
Portanto, este é o código que iremos anexar ao nosso NPC, que é a UG neste caso.
Antes de mais nada, precisamos nos certificar de agarrar o material de malha de navegação.
Assim, usando o motor de unidade AI no topo.
E então também queremos receber todos os pedaços e peças que precisamos enviar para nossos estados.
Portanto, precisamos de nosso agente de malha de navegação.
Precisamos do animador.
Um pouco mais tarde precisaremos do jogador também porque precisamos fazer seu NPC perseguir o jogador.
Portanto, vamos apenas colocar um público.
Transforme o jogador lá dentro e criaremos nosso estado, que é o estado atual.
Portanto, é tudo o que precisamos lá.
Só temos que lembrá-lo para dar o jogador a este código no inspetor.
Logo no início, vamos agarrar nossos agentes.
Agente de malha NAV.
Assim, o agente se iguala a este ponto para obter o componente.
Agente de malha NAV.
E o animador, eles ganham componente.
Animador.
E então criaremos nosso primeiro estado.
Portanto, o estado atual será igual a um novo ídolo.
E para isso, precisamos passar por todos os pedaços e peças.
Portanto, este NPC em particular.
Portanto, este jogo é um objeto.
Depois, precisa do agente, do animador e do jogador.
Agora você poderia fazer um componente dentro de seus estados e simplesmente passar pelo objeto do jogo, exceto que estamos criando
e destruindo novos estados o tempo todo.
E assim vai acabar ficando um pouco atrasado.
E eu tenho uma pequena admissão de que mais tarde chegaremos a um componente dentro de um
dos estados.
Mas há uma forma de contornar isso voltando aqui e certificando-se de que você pegue tudo logo no início,
quando o A. I. é criado.
Agora, em atualização, se você tiver criado algum A. I. antes, a atualização é onde toda a mágica acontece
e a atualização pode ficar como o verdadeiro código do esparguete.
Pode ficar muito, muito confuso e muito difícil de depurar e difícil de acertar.
Mas usando estes estados aqui, colocamos o estado atual vai igualar o processo de ponto de estado atual.
Portanto, lembre-se que o processo nos estados está trabalhando através da entrada da atualização e depois da saída e depois,
quando chega à saída, retorna ao próximo estado para o qual precisa ir, nem mesmo sair.
Se chegar a algum lugar na atualização que precisa jogar fora, ele define o novo estado seguinte,
que depois é passado de volta na saída.
Vamos apenas nos lembrar.
Portanto, voltemos ao estado e subamos ao topo onde tudo isso está acontecendo aqui em processo.
Portanto, provavelmente é muito mais fácil de explicar se estamos realmente olhando para isso.
Portanto, o processo vai correr a partir da IA que o pede.
E então, se a etapa for entrada, ela vai executar a entrada.
O enter então vai garantir que a etapa seja atualizada para atualização.
Portanto, da próxima vez que o processo de atualização de IA for chamado, ele vai executar esta
atualização e vai continuar fazendo isso até que a própria atualização o leve ao estado de saída, quando a saída é
executada e depois retorna, seja qual for o novo estado.
E se tivermos um olhar ocioso, podemos ver isso acontecendo aqui mesmo, onde um novo estado está sendo criado
para ser patrulhado.
Assim, com uma chance de 10% de ociosidade, entraremos em uma patrulha.
Muito bem, então essa é a sua classe de IA.
É isso aí.
É tudo o que precisamos lá dentro.
E você sabe, você pode acrescentar algumas outras coisas se quiser, mas no que diz respeito ao comportamento,
isso é tudo o que precisamos.
E continuamos acrescentando mais estados e ligando-os.
Ok, então vamos salvar isso.
Agora volte para a Unidade.
Você quer arrastar e soltar esse código II para a ARG.
Então, encontre a ARG em sua hierarquia, arraste e solte essa IA para lá.
Agora temos um controlador PHP que terá vindo com seu projeto para que você possa andar por aí,
pegar aquilo e arrastar aquilo para o jogador transformar a parte que está exposta.
Mais uma vez, não entra em jogo, mas será um pouco mais tarde.
Muito bem.
Por isso, agora estamos prontos para pressionar o jogo e dar uma olhada.
Então, deixe-me apenas fazer esta tela de jogo um pouco maior.
Peça de imprensa.
Muito bem.
Assim, você pode usar as teclas WASD para se mover em torno de todas as teclas de seta para este controlador de jogador e podemos
caminhar até a ARG.
Ele ainda não está programado para nos atacar.
Agora ele está com 10% de chance de ir em patrulha, mas não parece estar.
Agora sei por que isto acontece, e vou voltar e mostrar-lhes isso em um momento.
Mas por enquanto você pode, eu acho, apenas aproveitar seu estado de ociosidade.
E é assim que ele se parece quando está ocioso.
Ok, então basta pressionar a tecla escape para recuperar o cursor do mouse e parar de jogar e vamos
apenas voltar ao código do estado.
Deixe-me mostrar-lhe onde essa questão está ocorrendo.
Certo.
Portanto, a parte realmente, realmente importante de todo este sistema estatal é que isto aqui funciona bem para
ir de uma coisa a outra.
Então, entramos em atualização, atualizamos, atualizamos, atualizamos enquanto você precisar
atualizar e depois entramos na saída e depois retornamos ao próximo estado para o qual precisamos ir.
O que está acontecendo no inativo e eu provavelmente fiz isso errado também na patrulha.
Se formos para ociosos, vamos dar uma olhada.
A entrada está sendo feita no momento, está ociosa e depois está funcionando.
Sua base é a entrada.
Agora sua base de entrada é a atualização de eventos, o que é ótimo porque da próxima vez que o processo chegar, ele irá
executar a atualização.
Agora vamos voltar para a atualização.
Portanto, agora estamos chegando para atualizar com uma chance aleatória.
Começamos a patrulhar.
Em seguida, preparamos o evento para sair do palco, o que é tudo muito bom porque isso vai nos levar
ao próximo estágio dentro de nosso processo.
Mas será que sim?
Porque olhemos para baixo, estamos executando esta atualização baseada e se subirmos
e dermos uma olhada no que faz, ela está indo em frente e preparando nosso cenário de volta para a atualização.
Portanto, mesmo que o tenhamos definido para sair, ele só vai voltar para ser atualizado.
Portanto, na verdade, não precisamos chamá-lo aqui.
E então fazer isso aqui está apenas destruindo nosso código para que você possa se livrar dele, pois não está fazendo
muito por nós.
Ou você poderia colocá-lo acima desta declaração e permitir que a declaração se modifique.
Portanto, vamos nos livrar disso.
Agora vou apenas verificar se não fiz isso também na patrulha, porque isso nos dará a mesma pequena
situação mais tarde, pois não estamos realmente trocando de patrulha.
Quando entramos em uma patrulha, ficamos presos ali para sempre no momento.
Vamos nos livrar desta atualização porque é uma espécie de atualização de configuração supérflua para atualizar constantemente.
Certo.
Portanto, agora que estamos confiantes ou estou confiante de que isto vai funcionar, vamos salvá-lo.
Voltaremos ao jogo da Unity Press e depois vamos ver.
Assim você pode ver que ele saiu imediatamente em patrulha.
Portanto, 10% de chance.
Isso é verificar isso.
10% de chance.
Cada atualização.
Portanto, isso é bastante rápido.
E agora ele vai caminhar entre todos os pontos de passagem.
Agora ele não os está pegando em ordem porque vai depender de como o ambiente do jogo vai em frente e atualiza
esses waypoints.
Ele passará, no entanto, um a um.
Portanto, neste caso, a ordem que os objetos de jogo com código de tag que temos no ambiente do jogo está fazendo com
que eles se cruzem como um padrão.
Às vezes, isso os coloca em um padrão quadrado, mas desta vez não é.
Então ele vai apenas patrulhar e ir entre todos esses pontos para sempre e sempre.
Muito bem.
Agora, você provavelmente está pensando neste ponto, como posso ter meus waypoints na ordem certa?
Bem, uma maneira de fazê-lo é posicioná-los de acordo com seu nome.
Portanto, se tivermos um olhar na hierarquia, temos estes pontos de verificação como
este e eles estão situados de modo que eles contornam o mapa real.
Se você quiser pegá-los em ordem alfabética, então você poderia usar o nome deles e usar um link de sistema
ali dentro.
Portanto, se você entrar no código do seu ambiente de jogo onde você está realmente pegando aqueles pontos de verificação para fazer isso,
você só tem que adicionar duas linhas de código, o que eu já fiz aqui.
A primeira no topo é nossa biblioteca.
Portanto, acrescente um link de pontos do sistema que lhe permitirá fazer um pouco de ordem na sua lista.
E você pode ver isso aqui embaixo depois que criamos a instância.
Portanto, os pontos de verificação instantânea vão se igualar aos pontos de verificação instantânea ordenados pelo nome dos pontos de passagem.
E depois estamos apenas colocando de volta na lista e colocando-a de volta em nossos pontos de controle.
Portanto, isto os reordenará em ordem alfabética, ascendendo em ordem alfabética do nome.
Assim, você poderia passar e renomeá-los como waypoint um waypoint para 8. 3, o que você quiser, desde que estejam em ordem
alfabética e depois tenham essa ordem em particular.
É porque estamos fazendo uma busca de objetos de jogo com TAG que não podemos nunca ter certeza da ordem real
em que vamos conseguir esses objetos de jogo, mas podemos então forçar uma ordem usando isso.