Nesta palestra, vamos analisar o conceito de fuga.
É uma técnica comum utilizada na IA para conseguir que um NPC se afaste de um local.
A técnica pode ser usada em qualquer tipo de NPC.
Neste caso, vamos aplicá-lo à nossa multidão.
Temos trabalhado em fugir matematicamente.
Funciona assim.
Um objeto ou local é introduzido em um ambiente.
O NPC determina onde o objeto está em relação a sua própria posição.
Em seguida, eles calculam um novo local de objetivo que está longe do objeto.
Neste caso, usaremos exatamente a direção oposta.
Isto pode ser calculado usando o vetor em direção ao objeto e retirando-o da posição do NPC com a nova localização
do objetivo.
O agente pode se virar e começar a se dirigir para ele, sendo assim levado para longe do objeto em questão.
Outros fatores que podemos considerar são o raio de influência do objeto e o período de resfriamento.
O raio determina quão próximo um NPC deve estar de um objeto para ser afetado por ele, e o resfriamento
é quanto tempo o NPC foge antes de retornar ao comportamento normal.
Nas palestras anteriores, nós nos debruçamos sobre a criação de nossa multidão.
O que vamos fazer agora é, na verdade, fazê-los fugir de um objeto potencialmente perigoso.
Portanto, vou apenas desligar algumas coisas que temos usado e ligar algumas coisas.
Então, antes de tudo, você vai desligar os prédios e a loja, então eu vou apenas retirá-los, tornando-os
mais imprevisíveis para um inspetor habilitado, a câmera principal.
Vou colocar isso de volta e meu controlador F P's, vou desligar esse.
Agora, uma vez que você tenha feito isso, você vai querer vir para sua malha de navegação.
E na visão de cena vamos fazer um re-bake porque queremos que as pessoas possam andar por toda parte.
Muito bem.
Agora temos que encontrar nossos cubos, que eram nossos objetivos.
Certo, então aqui está um aqui e aqui está um aqui, e há outro aqui embaixo.
Traga-os para que se unam.
Agora você pode movê-los ou pode criar mais alguns.
Portanto, vou apenas duplicar aquela na esquina e colocar uma ali e depois aqui
e ali, só queremos que a multidão se movimente nesta praça.
Certo.
Agora vamos acrescentar em nosso indesejável objeto do qual queremos fugir.
Certo?
Portanto, vou apenas enrolar algumas dessas coisas.
Na verdade, eu poderia agarrar algumas dessas pessoas e, na verdade, torná-las crianças desta cidade.
BLOQUEAR objetos.
Na verdade, eu posso enrolá-los e me livrar de toda essa bagunça extra que está acontecendo dentro da hierarquia,
o que permitirá que você veja isso um pouco mais claramente.
Certo.
Portanto, vamos colocar esta garota também no bloco da cidade.
Certo.
Então, vamos agora clicar com o botão direito do mouse ali.
E objeto 3D.
Vamos adicionar em um cilindro.
Agora, o cilindro que queremos mover para cima para que possamos vê-lo.
Então, pressione a tecla W.
Vamos levantá-lo acima do solo.
Certifique-se de que e está acima do solo e depois vamos colorir aquele verde.
Por isso, vou criar um novo material.
Chame-o verde, torne-o verde.
Portanto, selecione-o.
E depois, no inspetor, defina a cor para ele, a cor do albedo para o verde, coloque isso no cilindro.
Agora com esse cilindro, ele vai cair quando clicarmos no chão.
Portanto, basicamente não queremos que comece por aí e vamos pegá-lo e depois simplesmente colocá-lo
na pasta de ativos, o que criará um pré-fabricado daquele cilindro para nós.
Então, podemos ir em frente e excluí-lo da hierarquia.
Agora precisamos acrescentar algum código para colocar o cilindro no lugar.
Então, em seu patrimônio, clique com o botão direito do mouse em Create C-sharp script, vamos chamá-lo de drop cylinder e vamos clicar
duas vezes sobre isso e editá-lo.
Certo.
Portanto, para começar, precisamos obter o pré-fabricado para o objeto que estamos deixando cair.
Portanto, será um objeto de jogo público.
Obstáculo.
E então queremos um conjunto de objetos de jogo de todos os agentes que estão no local para que possamos dizer
a eles que o obstáculo foi derrubado em nosso início.
Vamos agentes iguais a objetos de jogo, encontrar objetos de jogo com tag.
Portanto, temos que etiquetar todos os nossos agentes com a etiqueta de agente, o que faremos um pouco mais tarde.
E na atualização testaremos se clicamos no chão e, se assim for, instanciaremos um cilindro verde.
Portanto, se o ponto de entrada receber o mouse.
Botão para baixo.
É o botão esquerdo do mouse.
Depois faremos um elenco de raios que nos dá informações sobre o engate.
Certo.
Vai igualar o ponto da tela principal da câmera à posição do mouse do ponto de entrada do raio.
Então, esta linha projeta um raio da posição de clique para o ambiente e estamos procurando acertar algo.
Portanto, fazemos uma Física IFF.
Dot Ray.
Raio Fundido.
Origem.
Ray.
Direção.
Fora.
Informações.
Então, queremos instanciar.
Portanto, se atingimos algo, vamos instanciar nosso obstáculo.
No ponto de informação de impacto, o
obstáculo se transforma.
Rotação do ponto, que será apenas a rotação padrão do obstáculo porque INSTÂNCIA precisa de uma rotação,
então vamos apenas colocar um para isso e depois vamos enviar a mensagem a cada agente de que realmente
deixamos cair o cilindro.
Portanto, este será um para cada objeto de jogo A em agentes.
E, por enquanto, não temos nenhum código que faça alguma coisa com isso.
Portanto, vamos deixá-lo vazio.
E, portanto, não lhe dá realmente nenhum erro.
Vamos apenas comentar por enquanto, mas deixemos isso aí.
Portanto, economize isso.
Agora vamos voltar à unidade.
E eu quero que você arraste e solte o script do cilindro de gota para sua câmera.
Pode estar em qualquer coisa na cena do crime, desde que esteja em algum lugar.
Então, na minha câmera tenho aqui um cilindro de gota.
O obstáculo tem cilindro dentro dele.
Você precisa arrastar e soltar este cilindro pré-fabricado naquele local para que o cilindro se instante a instanciar.
A outra coisa é que este roteiro que acabamos de criar usa a câmera principal e ela não será
capaz de encontrar a câmera principal a menos que a câmera esteja marcada com a câmera principal.
Por isso, quando chegar a hora inicial desta câmera, acho que ela vai ter o controlador de jogo na etiqueta
que você tem.
Certifique-se de ajustá-lo ao controlador principal.
Certo.
Então, agora vamos brincar e clicaremos na superfície aqui e devemos obter alguns cilindros.
Agora estou recebendo um erro sobre uma etiqueta que não está sendo definida para a idade.
Isso é uma multa.
Basta ignorar isso porque voltaremos e colocaremos isso dentro de um momento.
Certo.
Portanto, agora precisamos descobrir como conseguir que esses agentes fujam e voltaremos a trabalhar nisso na próxima
palestra.