Bem-vindo de volta à segunda parte da produção do comportamento Hyde.
Ok, até agora, temos nosso agente e conseguimos colocá-lo do outro lado de um esconderijo.
Nesse caso, a árvore e empurre-o a uma certa distância ao longo do vetor que vai do policial à
árvore e além.
Você sabe por uma distância de dois ou distância de cinco ou distância de dez.
Agora, o que acontece se você acabar com objetos de tamanhos diferentes.
Bem, a posição em que medimos o vetor de policiais de e para é o centro do próprio modelo
real.
E o Trade Center, neste caso, está no centro de sua base.
Agora vai funcionar para a árvore.
Mas o que acontece quando queremos projetar algo um pouco maior e dizemos que ainda queremos distanciar-se
ou dois.
Bem, nós não podemos fazer isso.
Obviamente, se algo for do tamanho de 10 Wood, o ponto estaria dentro do nosso objeto oculto e, portanto, não
poderíamos calculá-lo para a malha nav.
E, como vimos antes, a malha de navegação não gosta de tentar definir posições para seus agentes para pontos que
não existem na malha de rede.
E, em outros casos, quando o seu agente não pode realmente chegar ao destino se
você tiver um código que precise lidar com isso, nunca poderá chegar ao seu esconderijo para continuar e
fazer outra coisa.
Então, como podemos corrigir isso.
Bem, lembre-se do colisor de caixa que colocamos na árvore.
É aí que entra.
O que vamos fazer é ter uma matriz de gesso do copo através da árvore.
E então o que vamos fazer é descobrir onde esse direito cruza o outro lado do colisor, de modo
que o colisor que está na parte de trás da árvore, porque é basicamente onde seu
agente pode ficar e ficar o mais próximo possível do agente fique de pé no obstáculo ou no
esconderijo sem estar dentro dele.
Então, como fazemos isso.
Bem, na verdade não é tão fácil quanto parece, porque você pode lançar um raio.
Você pode fazer um lançamento de raio e acertar um colisor na frente, mas não pode fazê-lo do outro lado
enquanto ele estiver viajando.
Portanto, quando sai do colisor, não há como detectar isso.
Então o que precisamos fazer é tirar Ray e empurrá-lo através do colisor.
E então, quando sair do outro lado, queremos dar a volta e enviá-lo
de volta para onde quer que ele aconteça do outro lado, quando voltar, é onde calculamos nosso esconderijo
sabendo que esse local será contra a nossa malha ou nossa árvore do esconderijo de obstáculos, seja o que for
que estamos usando, é o nosso esconderijo.
Então, vamos implementar isso como voltar ao nosso código bot.
Antes de tudo, vamos pegar o esconderijo inteiro, copiar e colar, porque é nossa base
que queremos construir e chamaremos isso de algo diferente.
Então, vamos chamá-lo de esconder inteligente.
Então, você tem duas cópias de um mecânico oculto, se quiser usá-las, e então colocaremos
um esconderijo inteligente aqui também, para que possamos executar esta.
Agora, o que queremos fazer ainda é encontrar a árvore mais próxima.
Então, nós temos as coisas certas aqui.
Mas o que precisamos fazer depois que obtemos a árvore mais próxima é pegar nosso vetor naquela árvore mais
próxima, girá-lo e fazer o lançamento correto antes de iniciarmos nossa busca.
Portanto, as coisas que precisaremos lembrar de ter passado por esse ciclo completo são o local
escolhido que já estamos recebendo.
Também precisamos lembrar a direção escolhida.
Portanto, a direção escolhida pelo vetor três será igual ao vetor três ou zero.
E também queremos obter o objeto do jogo que estamos lembrando, para que um objeto do jogo escolha geo que seja a árvore ou
o que quer que você tenha escondido atrás.
Então, a instância de ponto mundial tem pontos escondidos e definiremos isso para o primeiro, de modo que
basicamente o inicializamos para algo.
ESTÁ BEM.
Então, dentro deste, se os momentos em que escolhermos o que atualmente achamos ser o mais próximo após
a escolha impecável, basta registrar a direção escolhida.
Então, eles são escolhidos pelo DJI, será o nosso design de peles.
E então nosso objeto de jogo escolhido será este mundo escondido na posição.
EU.
Tudo certo.
Então, agora que temos esses valores, vamos descer antes de procurar e fazer um pequeno
lançamento de raio para descobrir onde o local está atrás da árvore ou atrás do colisor onde podemos ir e sentar o agente a seguir.
Então, primeiro de tudo, vamos nos apossar do colisor que está no objeto.
Então, Claudia escondeu carvão igual ao objeto de jogo escolhido.
Dot obter componente
colisor.
Agora, estamos criando um componente get aqui, que não é a coisa mais otimizada para ser executada, mas realmente
não há outra opção de onde colocar isso.
Eu acho que você poderia passar por todos os objetos do mundo enquanto os cria
na sua matriz mundial aqui e manter outra matriz apenas dos coletores para usar, mas também lembramos que, ao longo do caminho, garantiremos que
não realmente executar isso o tempo todo.
Portanto, não deve ser muito cansativo para o seu sistema.
OK.
Então, nós temos o nosso colisor agora, vamos
criar o nosso Rea que remonta na outra direção, então vamos chamá-lo de Ray de volta e isso será igual a um novo
raio do ponto escolhido na direção DIY negativa escolhida e nós precisa normalizá-lo porque o raio traseiro precisa de uma direção normalizada.
Então agora estamos voltando na outra direção.
Agora, o que você pode querer fazer também é com este aqui, é empurrar para fora este raio pelo qual você está passando, porque você está criando
esse esconderijo a uma distância de 10 e depois se virando e voltando para o outro
lado.
Agora, se o seu objeto estiver a uma distância maior do que 10 para atravessar, você ainda estará
sentado no centro dele.
E quando você faz uma projeção de volta para o outro lado, você não volta e atinge o outro lado.
Então você pode ter que fazer alguns testes com isso.
OK.
Então, a próxima coisa que vamos fazer aqui é criar uma informação de hit de elenco de raios e criar uma distância flutuante de
quão longe queremos projetar nosso raio para testar se atingimos alguma coisa .
Então, vamos dizer 100, que é uma maneira justa de projetá-lo e garantir que essa distância aqui seja
definitivamente maior que essa distância aqui.
Caso contrário, se você projetar isso como a distância de um, porque são dez aqui em cima, nunca vai
acertar e você acabará não acertando nada.
Então apenas observe isso.
OK.
Então agora fazemos nossas chamadas ocultas.
Então, com o nosso colisor de pontos Ray, estamos usando as informações e a distância
de Ray out.
Bem, temos o ponto de impacto na parte de trás, que será armazenado dentro da informação.
Portanto, nossa posição de busca agora não será o local escolhido, mas seria o ponto de informações onde o
golpe aconteceu.
Além disso, você ainda deseja se afastar um pouco do objeto para dar um pouco de espaço ao agente.
Como o agente tem um determinado tamanho e você ainda precisa empurrá-lo para longe.
Então, eu vou empurrá-lo de volta novamente, usando a direção escolhida que estávamos usando antes que
o ponto normalize e multiplicá-lo por cinco, é muito bom para o tamanho desses agentes específicos e você pode reduzi-lo a
dois, se quiser.
Novamente, você teria que testá-lo com o tamanho de seus agentes e a que distância você acha
que pode estar e se safar.
Ok, então é assim que esconder inteligente.
Digamos que voltemos à unidade e pressionaremos play e, desta vez, esconderemos e vamos
esconder.
Temos uma olhada aqui bem perto da árvore.
Agora, se deixarmos isso para trás, volte para o barco aqui e mude essa distância para dizer e salvá-lo, apenas
veja se chegamos um pouco mais perto desta vez.
E ele vai dar a volta na árvore e se esconder.
Oh, debaixo da árvore, você pode vê-lo lá.
Então ele é legal e perto da árvore.
OK.
Mas se selecionarmos a árvore que é essa aqui, você verá que a posição de acerto que
retornaria provavelmente estaria aqui.
Então, é o mais perto que ele chega dessa posição específica, lembre-se de que ele não estará fora
deste colisor porque não está impedindo o agente.
Esse colisor apenas calcula uma posição e então temos a distância de parada que estabelecemos em nosso robô mais
cedo, quando ele estava perseguindo o policial.
E isso também fará diferença em quão longe estamos de nossa posição de parada.
Portanto, se voltarmos ao inspetor sobre a borracha e dar uma olhada em nossa distância de parada, também será necessário
que, se você quiser que seja muito mais preciso, defina-o como zero.
Provavelmente, você pode ficar meio preso em algum lugar.
Vou configurá-lo para um e vamos dar uma outra olhada no quão perto chegamos.
E agora estamos chegando e você pode ver que ele está muito mais perto daquela árvore e onde
o ponto de colisão é que ele está quase certo na colisão ali.
Então isso é muito melhor.
Agora precisamos testá-lo com outra coisa um pouco maior.
ESTÁ BEM.
Então, vamos apenas diminuir o zoom aqui e eu vou fazer é mover as árvores para fora das estradas, para
que elas definitivamente não sejam a coisa mais próxima para ele se esconder atrás.
Em seguida, você encontrará em seus ativos uma pasta de ativos padrão com os antigos ativos padrão de prototipagem
que a unidade costumava fazer: procurar nas prefabs que você encontrará todos os tipos de diferentes objetos
básicos, salas de escadas, casas.
E o que vamos fazer é adicionar, digamos, o protótipo da casa aqui.
Então, basta arrastar e soltar que agora obviamente não o tornará um pouco menor porque é enorme.
ESTÁ BEM.
Então, vamos colocar essa palavra lá e vou verificar se estamos tocando o chão com ela.
Sim.
ESTÁ BEM.
Agora queremos definir isso como um esconderijo.
Assim, em um inspetor com o selecionado, você deseja selecionar ocultar tag falsa.
Também queremos adicionar um colisor de caixa.
Então desça para o fundo e verá que há um colisor de malha.
Não basta desligá-lo.
Livre-se disso porque o que descobri é que, mesmo que você o desligue e o
deixe lá, ainda causará problemas.
E, em vez disso, vamos adicionar esse colisor de caixa.
OK, então agora temos a casa e estamos prontos para ir, que dizem isso e pressionam play e lá vai ele.
Agora ele foi direto, porque você sabe o que eu esqueci de assar no Michigan, mas antes
que você não esqueça de defini-lo como uma estática de navegação, então o Agente navega e assa a malha.
E agora, se pressionamos play, o que vamos fazer é ir e nos esconder do outro lado desta casa.
Agora, se nós apenas manipularmos isso um pouco, para que possamos ver de onde
ele acabou, de uma vista de cima, você pode ver que ele está de fato onde você esperaria que Ray fundisse
o policial voltando do policial através daquele colisor e depois voltando àquele outro lado da casa, que é exatamente onde
ele parou, agora sem trabalhar como esperávamos, podemos voltar ao código do livro e adicionar um
pouco mais do que falei na parte um, que assegurava que essa alta não acontece toda atualização.
Basicamente, queremos verificar se precisamos nos esconder e vamos dizer que o agente precisa se
esconder para ver o alvo.
Então, a primeira coisa que vamos adicionar é um pequeno método chamado pode ver Target e, aqui
em cima, acima de nossa atualização, adicionaremos isso para que seja booleano possa ver o alvo então dentro daqui.
Vamos fazer uma reformulação para que o elenco acertado atinja a vítima 3 Ray no alvo.
Então, vamos criar uma carona que vai da posição do nosso agente até a posição do nosso alvo.
Então, ponto alvo posição transformada menos essa posição de ponto de transformação de ponto e, em seguida, diremos se o ponto de física Ray custou essa
posição de ponto de transformação Ray a ser alvo e a saída será a nossa informação de reformulação se o objeto que atingimos, se a informação de
reformulação transformar Objeto de jogo de pontos A marca de pontos é igual a qualquer marca que temos em nossos policiais ou em
nosso policial, que é policial.
Mas verifique se o seu projeto foi aprovado e retornaremos verdadeiro.
Então, isso vai fazer uma varredura que, se estivermos escondidos atrás de
algo e não pudermos ser vistos pelo policial, não iremos acertá-lo com esse direito.
Na verdade, vamos acertar o colisor do objeto que estamos escondendo atrás.
Ok, pequeno erro de ortografia aqui em cima, vamos consertar isso.
Minhas informações de elenco e estamos retornando true em outro lugar, vamos retornar false.
É assim que eu posso ver o Target agora na atualização.
O que podemos fazer é ir, se pudermos ver o alvo, executaremos o nosso esconderijo da nossa capacidade de alvo.
Certo.
Então salve isso e volte à unidade.
Antes de tudo, vamos apenas verificar se nosso copo está marcado e não está.
Então isso é bom.
Então, eu vou adicionar tag para a nossa xícara e colocar Cup como a nova tag.
Selecione o copo e faça um copo.
OK.
Muito importante.
Tudo certo.
Então eu pressiono play.
OK.
Então ele pode ver que vai se esforçar nesse local agora.
Não vai se mexer até eu começar a virar a esquina e então ele vai para a
esquina
e se foi.
E ele estava do outro lado por causa da maneira que projetamos do copo através desse objeto.
Ok, então ele está lá.
Então, vamos dar uma volta na esquina.
E assim que nos tornarmos visíveis, ele irá se esconder em outro lugar.
Agora, a razão pela qual ele não está se escondendo ao virar da esquina.
Quero dizer, ele está nesse caso, mas assim que eu chego na esquina.
Você vê que eu chego a essa esquina aqui.
Ele agora vai aqui em algum lugar porque é onde o vetor está sendo projetado.
Ele poderia se esconder apenas aqui na esquina.
Mas o que fizemos não é tão complexo que permita isso, mas tudo bem,
porque ele está muito mais longe e muito mais seguro do que estar na esquina.
Então esse é o nosso mecânico de direção de pele.