Nesse ponto, você tem todo um conjunto de comportamentos programados em seu bot e o mais interessante é
que você pode começar a combiná-los para obter todos os tipos diferentes de comportamentos e efeitos complexos
de seus agentes.
Então, o que vamos fazer neste vídeo é criar um pequeno cenário em que a
borracha vai aparecer na polícia.
Mas quando o policial está olhando para a borracha, a borracha vai se esconder.
Então é como se você conhecesse alguém e se certificasse de se esconder atrás das coisas,
se elas se virassem para tentar olhar para você.
Portanto, a primeira coisa que precisamos fazer é descobrir como o policial conhece os ladrões de lá ou como o ladrão
sabe que o policial está olhando para eles.
OK.
Então vamos descobrir.
Objeto policial, que está aqui embaixo agora.
Ele tem um vetor para a frente.
OK, então há vetores envolvidos nisso novamente.
E eu acho que você está percebendo o quanto os vetores fazem no desenvolvimento de jogos, tanto quanto mover os
personagens e descobrir onde as coisas estão, elas são simplesmente brilhantes.
E você realmente precisa ter uma compreensão completa dos vetores, porque é uma coisa poderosa a ter em
seu kit de ferramentas agora.
ESTÁ BEM.
Estamos olhando para frente, esse é o vetor do policial, então vamos girá-lo.
Então, se ele estava olhando como nessa direção e é só acertar o W. K. você pode ver que o vetor voltado
para a frente é assim.
Então, se ele está enfrentando esse caminho, você pode ser muito feliz em dizer que ele pode ver o ladrão, mesmo que ele não
esteja enfrentando diretamente.
Portanto, temos esses dois vetores, temos o vetor para frente que é a direção oposta ao seu policial.
E também haverá o vetor do ladrão aqui.
Então, vamos testar qual é o ângulo entre a frente do policial e a
direção do ladrão.
Agora, se estiver dentro de um certo intervalo, digamos 60 graus, podemos dizer que tudo bem, o policial está olhando na
direção do ladrão.
Portanto, o ladrão nesse ponto irá se esconder, se não.
Então os policiais estão de frente para o outro lado e estão se afastando.
Então o ladrão vai perseguir.
Então, vamos entrar no nosso código bot e começar a adicionar isso na primeira coisa que precisaremos, é
outro método que diz ao agente se o destino pode vê-lo.
Então, criaremos outro método aqui que retorna true ou false,
então bool e digamos que o Target pode me ver e, para isso, precisamos calcular o vetor três para o Agent igual a este ponto
transformar a posição menos a posição do alvo. posição, então podemos calcular o ângulo, de modo que o ângulo de flutuação seja
igual ao vetor 3, o ângulo entre o ponto transformado alvo para a frente e o agente 2 e, em seguida, mova-se
dizendo que, se o ângulo de visão for menor que 60, retornaremos verdadeiro, sim, podemos vê-lo.
Senão, vamos retornar falso.
Tudo certo.
Então esse é o objetivo que pode me ver.
O que fazemos agora em nossa atualização é usá-lo em nossa declaração if aqui.
Então ele pode ver o Target e o Target pode me ver.
Então iremos nos esconder.
Senão, faremos uma busca.
Tudo certo.
Então salve isso.
Vamos voltar à unidade, pressionar play e ver como isso funciona.
No momento, estamos olhando para o policial.
Então ele vai se esforçar.
Agora, se eu me virar e começar a me afastar, ele vai me perseguir muito bem.
Rígido e volte por aqui.
Eu irei aqui e quando ele chegar aqui eu me viro e vou, oh, eu posso te ver.
E ele vai e se esconde atrás da árvore e me deixa passar aqui.
E eu só estou tentando fazê-lo ir e se esconder atrás de lá.
Não posso.
Agora o que vai acontecer.
Você continua olhando para ele.
Ele vai continuar aparecendo na esquina porque está se escondendo e, obviamente, você não pode vê-lo.
Bem, você está olhando nessa direção.
Mas você não pode fazer isso, pode me ver pensar que isso fará com que a pele ocorra.
Portanto, ele só vai continuar checando.
Está tudo bem em sair.
Sim.
Está tudo bem sair ainda.
Agora, quando eu me virar, ele entrará e perseguirá.
O que é bom.
OK.
Agora você pode realmente querer que ele complete o esconderijo.
Então, se estivermos aqui e eu me viro e o vejo, e então eu volto novamente, ele virá me perseguir, porque não há
nenhum tipo de atraso ou resfriamento em sua ação e você pode querer que você queira que ele realmente
faça isso.
Agora, vamos colocar isso no código em que realmente vamos terminar ou não.
Mas acalme um comportamento em particular, o que significa que, se ele te viu, você vai fugir e se
esconder.
Independentemente de ele voltar imediatamente ou não, então colocaremos algo como você sabe por cinco segundos,
apenas continue a se esconder ou você sabe apenas continuar a perseguir sem mudar de um lado para o outro,
porque eles vão virar e voltar entre esses comportamentos com base no verdadeiro ou falso.
E se o fizerem, na verdade, não lhe dará tempo para concluir um comportamento específico e você pode
querer que isso aconteça bem.
Então, o que vamos fazer é adicionar primeiro um novo valor
booleano que será chamado de cooldown e o definiremos inicialmente como false e depois em nossa atualização.
O que vamos fazer aqui é colocar, se não estamos esfriando, então podemos escolher um comportamento.
Então isso é apenas isso.
Agora, quando a recarga se torna verdadeira.
Bem, a recarga se tornará realidade quando estivermos fazendo esse esconderijo.
Então, isso realmente passará algum tempo escondido antes de sair do esconderijo.
Então, aqui com este esconderijo inteligente depois de executá-lo, uma vez que diremos que esfriar é igual a verdade.
Curtiu isso.
Agora isso vai impedir que isso volte aqui novamente.
Mas, em algum momento, precisamos nos acalmar de volta para as pessoas, para que possamos entrar e escolher um novo comportamento.
Então, eu vou ter um método invocado e então invocarei sob o comportamento aqui.
Esfrie e faremos isso em, digamos, cinco segundos.
E isso significa que realmente precisamos escrever esse método.
Então aqui em cima teremos um comportamento vazio.
Esfrie e tudo o que você fará é esfriar igual a falso e configurá-lo novamente para falso.
Após esses cinco segundos para nós.
Agora, é claro que você pode ter tempos de espera para o comportamento diferente.
Este é apenas um genérico para tudo.
E você pode ter outros comportamentos que está adotando aqui com diferentes invocações da recarga
para completá-los.
Mas vamos fazer cinco segundos aqui, o que significa que, uma vez que ele vá e se esconda se o policial
se virar ou não, ele ainda vai completar esse esconderijo e ele se esconderá por cinco segundos antes
mesmo de sair para verificar novamente.
Tudo certo.
Então, vamos pressionar play e estaremos de frente para ele inicialmente.
Eu digo que ele vai e se esconde.
Agora, depois de cinco segundos, ele volta e verifica se a costa está limpa.
Agora veja como isso é um pouco melhor do que ele pulando para frente e para trás.
Então, se eu me virar agora quando ele sair, ele vai achar que está tudo bem.
Não não.
Você pode me ver.
Vou me esconder novamente e estarei
olhando quando ele chegar ao virar da esquina.
Lá vai ele e ele vai se esconder e ele volta novamente
OK.
Portanto, é uma maneira muito simples de adicionar comportamentos realmente complexos ao nosso sistema, colocando algumas declarações if das
condições em que você as executará e executando os comportamentos que já escrevemos
e apenas combinando-os para obter efeitos diferentes.