Certo.
É hora de começar a ter um pouco de comportamento AI embutido em nosso NPC e vamos fazer isso nos Estados
Unidos para não termos que tocar o roteiro AI de fato.
Vamos para os Estados Unidos e apenas fazer a transição de diferentes estados para mudar o comportamento do NPC,
que é o que todos eles são.
Vamos direto para o topo do código de nossos estados para o estado base.
O que vou fazer aqui é acrescentar alguns pequenos métodos de ajuda.
Antes de mais nada, a lógica que vamos usar é: o NPC pode ver o jogador?
Portanto, vamos usar uma espécie de cálculo simples de linha de visão, o que significa
que o jogador tem que estar a uma certa distância, mas eles também têm que estar em frente ao NPC, momento em que o NPC
pode então decidir se ele vai perseguir o jogador ou se ele vai começar a atirar no jogador.
Portanto, teremos que estar um pouco mais perto do jogador para poder atirar, o que significa que você
pode fugir e ter a embaixada realmente correndo atrás de você até que ela entre na carreira de tiro,
quando voltará a atirar.
Por isso, é um pouco mais dinâmico do que simplesmente atirar em você para que ele se movimente pelo
mapa e o siga.
Antes de mais nada, vamos construir estes dois métodos.
Portanto, primeiro queremos um bool público.
Portanto, vai retornar verdadeiro ou falso e poderá ver o jogador.
Então estamos apenas fazendo uma pergunta muito simples: o NPC pode ver o jogador?
Agora, para fazer isso, temos que calcular a distância e também o ângulo.
Então comecemos com o vetor três.
Essa será uma direção a partir da posição do ponto do jogador.
Menos a posição da transformadora NPC.
Portanto, isto nos dá o vetor do NPC para o jogador.
Certo.
Então, podemos encontrar o ângulo.
O ângulo de flutuação é igual ao ângulo de três pontos do vetor construído em unidade matemática usando o vetor de
direção e o NPC é o vetor trance do ponto para frente.
Então, com esse ângulo, podemos descobrir se estamos dentro da linha de visão.
Certo.
Portanto, a declaração vai ser um pouco assim.
Se direção, que é aquele vetor entre o jogador e a magnitude do ponto NPC, que é o comprimento daquele
vetor.
Portanto, a distância entre o jogador e a MBC é menor do que a distância.
Lembre-se, esse é o nosso carro alegórico que criamos muito cedo no topo.
Na verdade, vamos usar tudo isso neste pequeno conjunto de métodos.
Portanto, temos nossa distância visível a dez, nosso ângulo visível a 30 graus e nossa distância de disparo
a sete.
E você pode mudá-los e brincar com eles como quiser para ter comportamentos diferentes.
Certo, então há nossa distância visível e também queremos que o ângulo seja menor que o viz ângulo.
Assim, o ângulo visível é ajustado para 30 e vamos encontrar o ângulo entre a direção
e o vetor de avanço do NPC, que será metade de sua visibilidade total.
Portanto, se você quiser um campo de visão de 60 graus para o seu NPC, então estamos apenas dando-lhe um viz ângulo
de metade disso, que é o de 30.
Agora, se isso estiver correto, então podemos dizer que vamos voltar.
Verdade?
Sim, eu posso ver o jogador.
Está bem.
Basta consertar estes parênteses e pronto.
Oh, é claro.
Também precisamos voltar falso como nosso recuo que não podemos ver o jogador.
O outro método que será adicionado logo após este será determinar se estamos perto o suficiente
para atacar o jogador para torná-lo uma bola pública novamente, pode atacar o jogador.
E então, dentro daqui, o que vamos fazer é obter nosso vetor de direção novamente para que possamos simplesmente
copiar este aqui.
E vamos simplesmente verificar o comprimento do mesmo.
Portanto, se a magnitude da direção for menor do que a calha, distância ou distância neste caso, então voltaremos.
É verdade.
Caso contrário, nós voltaremos.
Falso.
Certo.
Por isso, acho que acabei de perder um parêntesis para o final da aula e voltamos a colocá-lo lá.
Certo.
Portanto, estes são os dois métodos que agora vamos utilizar mais abaixo em outros estados para determinar
se devemos então começar a seguir o jogador.
Agora, nós ainda não temos esses estados, então vamos adicioná-los ao fundo.
Portanto, role até o fundo ou abra um novo arquivo se você estiver colocando tudo isso em arquivos
de classe separados.
E vamos começar com a perseguição.
Assim, a classe pública prossegue.
E isso será um estado.
Então a primeira coisa que precisamos fazer é nosso construtor.
Tão público.
Perseguir.
E vai ter praticamente o mesmo material que nossos outros estados, que é isto aqui, porque precisamos
passar por todos estes detalhes.
Então, vamos lá e acrescentemos isto.
Assim.
Certo.
Então, dentro daqui, vamos definir o nome.
Portanto, o nome será igual a ponto de estado perseguido.
Não esse estado.
Eles são assim.
Então precisamos da velocidade do agente.
Assim, os agentes aceleram.
Neste caso, quando ele estiver perseguindo você, vamos fazer cinco.
Portanto, e na verdade, estar correndo em vez de andar quando ele está te perseguindo.
Portanto, é preciso torná-lo um pouco maior e depois apenas fazer com que o ponto de agente seja parado igual a falso.
Muito bem, agora vamos entrar em nossa entrada.
Portanto, a anulação pública.
Vazio.
Entre.
E assim vai ser.
Defina a animação para rodar de forma tão animada o gatilho do conjunto.
Ele está correndo e isso é tudo que precisamos fazer dentro do enter o método que vai fazer a maior parte do trabalho será atualizado
neste caso.
Portanto, a atualização de anulações públicas.
E não terá a atualização como já aprendemos antes.
Vamos nos livrar disso porque o que não serve de nada para nós agente definir destino e isso irá definir uma posição
de objetivo para o agente para as coisas de malha de navegação.
Portanto, é a posição de ponto do jogador que a definirá.
Então vamos dizer que se o ponto agente tem um caminho, o que significa que está realmente seguindo o jogador,
vamos testar se podemos atacar.
Portanto, estamos em perseguição e, se estivermos perto o suficiente, queremos de fato mudar para um ataque.
Portanto, se pode atacar o jogador.
E então, dentro disso, colocaremos o próximo estado igual a um novo ataque.
E que mais uma vez teremos nosso agente NPC Adam e o jogador passarão por ele e então o palco estará à altura
do evento.
Dot.
Saída porque agora estamos terminados com este estado de perseguição e queremos então passar para a saída.
Agora, se não podemos atacar o jogador, então nós vamos.
Então vamos testar se, se não podemos ver o jogador, então não ver o jogador.
Lembre-se que vendo o jogador mudar para este estado e depois que não pudermos mais ver o jogador,
queremos voltar para o estado de patrulha.
Portanto, no próximo estado, neste caso, se você não puder ver o jogador, será igual a uma nova patrulha.
Mais uma vez, queremos passar por estas coisas.
Vamos copiá-los de lá de cima, trazê-los para cá.
E mais uma vez, vamos ao palco igual a um evento, não a uma saída assim.
Portanto, esta é nossa atualização.
Vamos apenas fechar os parênteses para que o caminho tenha sido aberto.
Agora, por que estou verificando se isto tem caminho, se nós obviamente estabelecemos um destino aqui?
Bem, com o sistema de malha de navegação, o que acontece é que você pode definir um destino, mas o processamento da malha
de navegação em si pode ainda não ter acontecido até o momento em que você chegar daqui para o próximo tipo de linhas.
Portanto, você quer esperar pelo menos uma atualização até que ela volte aqui novamente para descobrir se você tem um
caminho e depois descobrir o ataque e outras coisas.
Caso contrário, você terá um comportamento muito estranho e é apenas uma coisa que a malha de navegação faz e da
maneira como a malha de navegação o faz, você terá preparado algo para a malha de navegação e dito a ela para definir um destino
ou traçar um caminho ou fazer algo com o agente.
E então você estará tentando fazer coisas imediatamente depois em seu código e isso não vai funcionar.
E isso porque tem que fazer coisas em segundo plano antes de estar em um estado de prontidão.
E isto aqui é apenas um teste para isso.
Muito bem.
Por isso, agora fizemos nossa atualização.
Vamos colocar em nossa saída e isso será uma anulação pública, vazia, saída.
E quando sairmos, vamos reiniciar o gatilho para que este não fique pendurado
em nós.
Depois nossa saída de base.
Portanto, tudo isso é feito para a perseguição.
Logo em seguida, nosso estado final por enquanto é um ataque de classe pública.
Estado.
E este é o ataque que estamos usando aqui em cima.
Se você puder ver o jogador, queremos entrar em modo de ataque.
Certo.
Então, o que teremos aqui?
Bem, neste caso, o NPC tem que seguir o jogador ou virar e olhar para o jogador.
Se você quiser como está filmando.
Portanto, vamos colocar aqui um valor de velocidade de rotação do flutuador igual a F para que possamos girar ao redor.
Vamos pegar a fonte de áudio que está anexada ao NPC.
Agora, este é o caso que mencionei na palestra anterior onde vou ter um componente para
obter a fonte de áudio, enquanto que provavelmente seria melhor passar por ele em
vez de obtê-lo toda vez que surgir uma situação de ataque.
Mas foi assim que eu fiz.
Portanto, ataque público.
Agora precisamos de todos os nossos pedaços e peças que tínhamos antes.
Para estes, vamos até a perseguição e pegar tudo isso porque estamos usando
isso novamente, colocá-lo em nosso ataque e então vamos nomeá-lo.
Portanto, o nome é igual ao ataque de ponto de estado.
E a filmagem vai igualar o componente secreto do PNP.
Para a fonte de áudio que está anexada à UG, que é um som de tiro.
Ok, então é tudo o que estamos fazendo dentro desse ataque.
Muito bem.
Em seguida, precisamos novamente das antigas regras de uso.
Portanto, anulação pública, anulação, entrada e.
Anulação pública.
Vazio.
Atualização.
E a saída.
Portanto, anulação pública, vazio, saída.
Quando entramos neste estado, antes de mais nada, queremos montar uma animação de filmagem.
Então, o gatilho do conjunto é animado.
Está atirando.
Novamente o agente Dot vai ser detido neste caso, como nós fazemos neste caso, queremos parar o agente porque
eles estão atacando que saíram da perseguição.
Portanto, eles são na verdade o agente está caminhando por um caminho em direção ao jogador.
Mas assim que vê o jogador, ele tem que parar esse caminho.
Assim, ao colocar o agente é interrompido, o agente é realmente parado e, então, ele pode
começar a atirar e isso o impedirá de segui-lo enquanto ainda está atirando.
Agora também precisamos iniciar o som do tiroteio, para que possamos ir ao jogo de tiroteio e isso vai começar para nós.
Em seguida, estamos no método de atualização e teremos que fazer isso no próximo vídeo, porque estou bem,
estou ficando sem tempo, por isso o verei lá dentro.