Esconder tem que ser um dos meus comportamentos favoritos de olhar, porque é meio que um pouco
sorrateiro e você também pode criar coisas que não estão tentando apenas esconder de um personagem em particular, mas
estão se escondendo quando estão se escondendo. esconder e perseguir, o que lhe dá uma dinâmica realmente interessante em um ambiente
de jogo.
Portanto, para fazer isso, é realmente bastante simples.
Mas há muito trabalho envolvido.
Antes de tudo, você precisa de um monte de obstáculos que seu agente pode esconder.
Então, nós temos nossa árvore que fica ali o tempo todo.
Vamos usar isso agora para descobrir onde o melhor local para se esconder é se a borracha vai se
esconder do policial.
Então, o que fazemos é obter um vetor do policial para a árvore e continuar passando pelo centro da
árvore para o lado oposto, o que significa que, se você estiver exatamente do lado oposto da árvore do policial, estará obviamente
escondido do policial, porque se você tentasse fazer um gesso do policial para a borracha ou a borracha para o policial,
eles não seriam capazes de se ver porque atingiam a
árvore e, portanto, você fica escondido.
Então, antes de tudo, o que precisamos fazer é definir quais são todos os esconderijos do mundo real.
Então, de volta ao nosso ambiente, se dermos uma olhada na hierarquia sob o objeto Ambiente, você encontrará
o objeto em árvore que está lá há bastante tempo.
E se você clicar nele, verá que está marcado com a tag hide em letras minúsculas.
Agora, se a sua não for por causa da maneira como foi importada, crie uma
nova tag e defina a árvore para ocultar. Podemos usar essa tag para qualquer objeto que você queira colocar no
ambiente para ocultar .
Lembre-se também de que a árvore é uma estática de navegação.
Ok, então isso significa que aqui estamos configurados para navegação estática.
E quando quebrarmos nossa malha de navegação, ela excluirá a árvore.
Portanto, se apenas pressionarmos o forno e fizermos um rápido cozimento para nós, descobriremos que ele foi eliminado como um ponto em que
você pode suportar.
Portanto, se você adicionar várias árvores, volte sempre e faça isso na sua navegação.
Ok, agora que entendemos que também queremos fazer da árvore um colisor.
Agora não porque queremos que nosso personagem colidir com ele, mas porque em algum momento queremos
lançar um raio e ver se conseguimos ver o policial, selecione a árvore e vá ao inspetor e adicione o componente.
E eu vou adicionar um colisor.
Queremos adicionar um colisor de caixa que seja apenas porque será simples.
Agora, com essa árvore, você terá um colisor de caixas que fica bem em
volta da árvore e poderá ver na mesma vista se você tiver algum outro objeto e ele não
estiver se encaixando perfeitamente, então você pode simplesmente ajustar o centro e o tamanho no inspetor para esse colisor.
E agora que você tem essa árvore com a tag e o quarto, pode essencialmente fazer uma
pré-fabricada ou copiar e colar ou duplicar em todo o ambiente, e então você tem muitos lugares para se esconder.
Certo.
Então, nós temos todos esses esconderijos.
Temos um no momento.
Sempre bom testar com apenas uma coisa para que possamos descobrir o que deu errado, se isso acontecer.
Precisamos pegar todas essas árvores no começo do jogo.
Então, eu vou criar um singleton e vou chamá-lo de Singleton o
mundo e ele vai manter todas as nossas posições de esconderijo.
ESTÁ BEM.
Então, vamos chamá-lo de mundo e vamos entrar aqui.
Agora, o que vamos fazer com isso não é transformá-lo em um comportamento moral.
Vamos nos livrar disso e vamos torná-la uma classe pública selada e,
em seguida, criaremos uma instância de mundo estático de leitura estática privada que será igual a um mundo novo e também criaremos um
objeto de jogo estático privado Array que conterá tudo sobre obstáculos e vamos chamá-los de esconderijos como esse.
OK, então criaremos todos os nossos construtores para um mundo estático e, nesse
construtor, ele realmente percorrerá o mundo e agarrará todos os esconderijos.
Então, esconderijos é igual a ponto do objeto do jogo, encontre objetos do jogo com o Tag.
Certifique-se de que são os bons objetos de jogo com um s para que você obtenha toda a matriz.
E nós queremos eles com tags com Hide, todas em minúsculas.
ESTÁ BEM.
Portanto, precisamos finalizar nosso mundo privado Singleton, que é basicamente vazio e uma
instância pública estática do
mundo com uma entrada lá.
Portanto, obtenha instância de retorno, você será um r minúsculo
porque estamos falando sobre esse aqui em cima.
EU.
E também teremos outro método de objeto público de jogo Array, que obtém os esconderijos.
Então, eu tenho esconderijos e agora nunca mais vou voltar a esconder esconderijos.
Agora, isso significa que esse objeto irá buscar todos os esconderijos e quaisquer agentes no
ambiente só precisam pedir ao mundo por eles do mundo Singleton e eles não precisam continuar obtendo-os o
tempo todo.
ESTÁ BEM.
Então salve isso.
E agora vamos voltar à unidade.
A próxima coisa que vamos fazer é mudar nosso bot para agora esconder.
ESTÁ BEM.
Então abra seu script de bot e agora vamos adicionar um método hide.
Então aqui embaixo vamos colocar o esconderijo
de Boyd agora, o que o esconderijo precisa fazer é encontrar o melhor esconderijo.
Agora, esse pode ser o esconderijo mais próximo, se você quiser que se esconda rapidamente, ou pode ser o esconderijo mais
distante.
Nesse caso, vamos encontrar o esconderijo mais próximo do agente e nos esconder lá.
ESTÁ BEM.
Portanto, precisamos de um valor de distância para manter a distância em que estamos comparando as coisas novamente.
Então, inicialmente, vamos definir isso como matemático se o infinito de pontos for realmente muito grande e que qualquer coisa com a qual
você o compare seja menor.
E então precisamos de um vetor três para o local escolhido.
E inicialmente definiremos isso como vetor 3 0.
ESTÁ BEM.
Então, vamos percorrer todos os esconderijos com um loop for.
Portanto, para int i é igual a zero, i é menor que o ponto da instância de ponto do mundo.
Então, vamos criar um vetor três que será a nossa direção de ocultação e que será
igual a l árvore.
Portanto, nossa instância mundial de pontos para obter pontos escondidos ou colchetes de pontos eu transformo a posição do ponto menos a posição transformada do ponto
de destino.
Portanto, este é o vetor do copo para a árvore.
Ok, então o vetor três para a nossa posição de ocultação será igual à mesma coisa novamente, então eu vou pegar toda
essa posição da árvore, para que essa seja a
posição da árvore.
Então, o que vamos fazer é adicionar um pouco mais de espaço para que você realmente passe pela
árvore, para fazer isso, basta adicionar o vetor de alta direção a isso e queremos normalizá-lo para que a versão normalizada seja
sabemos o comprimento de uma e então podemos definir uma distância atrás daquela
árvore que queremos esconder.
Nesse caso, vamos apenas nos esconder a uma distância de cinco atrás da árvore e você pode brincar com isso,
dependendo de quão perto você deseja estar dessa árvore em particular.
E, na verdade, melhoraremos esse algoritmo mais tarde e nos livraremos desses 5.
Mas, por enquanto, vamos definir para cinco.
OK.
Então, nós temos isso.
Agora, o que vamos fazer é verificar se a próxima árvore que aparece é realmente mais próxima.
E se for, usaremos isso como o local escolhido.
OK.
Então, queremos que o vetor 3 distancie esse ponto e transforme a posição do ponto oculto.
Pausa.
Portanto, essa é a distância entre nosso agente e a posição oculta, se é menor que dist, então é
para onde vamos nos esconder.
Então aqui colocaremos o ponto escolhido igual a
hide hide e depois atualizaremos a distância.
Então a distância será igual ao vetor através de uma distância aqui que acabamos de testar.
Então pegue isso e coloque lá em baixo.
Portanto, agora será a distância da árvore mais próxima que encontramos até agora.
OK.
E então terminaremos nosso loop 4 aqui, não deve ser o que está atualizado para tão dest e agora que temos que podemos ir de fato ao
destino do ponto de agente para o local escolhido e se realmente queremos ser consistentes do que fazer
isso, porque é isso que a sik está fazendo de qualquer maneira; apenas usaremos
o seek, caso façamos algo diferente para procurar.
ESTÁ BEM.
Então essa é a nossa pele.
Bem simples quando você pensa sobre isso, diga isso.
Agora, o que vamos fazer é, em nossa atualização, definiremos isso como oculto.
Então vamos salvá-lo.
Agora vamos voltar à unidade e estamos praticamente prontos para jogar e testar isso.
Então pressione play e o nosso agente vai e se esconde atrás da árvore.
Certo.
Então agora, se eu me mudar para cá, ele irá para lá e se eu me mudar novamente, ele irá para lá.
Então ele está constantemente se escondendo atrás da árvore, o que é ótimo para nós.
Mas se você pensar no processamento que está ocorrendo agora, o algoritmo hide está executando todas as atualizações.
Se ele já está escondido do policial, não precisamos continuar correndo até que chegue um momento em que ele
não esteja mais escondido e resolveremos isso no próximo vídeo.
Mas, por enquanto, você provavelmente deseja adicionar mais algumas árvores para ver como isso funciona.
Vamos entrar no ambiente e pegar a árvore que você possui.
Eu vou controlar D.
Pressione a tecla w e, em seguida, faça uma nova árvore e mova-a.
Controle D.
Mova-o ao redor do troll D para lá.
E o que eu disse que você tem que lembrar.
Você precisa entrar em uma navegação e ter que se lembrar de andar de bicicleta para ter certeza de que
fez isso para a nova malha de navegação Ok, então pressione play agora vai se esconder atrás daquela árvore porque é realmente o mais
próximo e você pode realmente ver isso.
E agora, devido à maneira programada atualmente, talvez você não consiga ir
para uma árvore diferente, dependendo de encontrar outras mais próximas.
Não.
Agora, uma maneira de fazer isso é se voltarmos ao código bot e lembrarmos deste pequeno 5 que colocamos
a que distância estamos da árvore.
Se nos escondermos atrás de uma árvore a uma certa distância dessa árvore, essa distância acaba ficando mais
próxima de outra árvore depois que ele se moverá.
Então, vamos atualizar isso para dizer 10, o que eu acho que provavelmente vai esticar
as coisas um pouco até a distância, mas vamos pressionar play e ele vai se esconder atrás dessa árvore porque o mais próximo, mas ele vai chegar
a uma distância de 10.
Então vamos deixar isso claro, você pode ver que ele está aqui agora, então eu
vou persegui-lo com meu policial e espero que você o empurre.
Agora ele se esconde atrás da árvore a uma distância de 10.
E então, se eu voltar aqui e forçá-lo a contornar o outro lado a uma distância de 10, não sei de qual deles
estar mais perto.
Sim aquele aí.
ESTÁ BEM.
Então foi lá.
Certo, ótimo.
E você pode ver que uma distância de 10 escondidos atrás de uma árvore parece um pouco artificial.
Porque se você se esconder atrás de uma árvore, você será educado contra a árvore.
E como eu disse, vamos resolver isso.
OK.
Então esse é o método básico de ocultar.
Voltaremos no próximo vídeo na parte 2 e realmente melhoraremos isso.