O comportamento maravilhoso é o que você quer que um personagem faça quando não tem um local oficial para ir.
Acho que você poderia considerar isso como o estado ocioso da direção.
Tem que ser aleatório, mas não muito aleatório para garantir que o personagem não esteja pulando de
um lugar para o outro de forma errática.
Neste vídeo, todos nós olhamos apenas para uma maneira de produzir uma boa caminhada.
Funciona utilizando um círculo imaginário que está sentado na frente do personagem.
O círculo tem um local de destino posicionado na circunferência que se move para trás e para frente ao redor
do círculo à medida que se move.
O agente tem seu alvo atualizado e ele muda de direção.
Há três variáveis que basicamente definem este sistema e como ele faz com que o agente se comporte.
A distância deambulação, que é a distância do agente até o meio do círculo.
O raio de passeio que define o tamanho do círculo.
E o vagabundo Gita.
Isso influencia como a localização do alvo se move de atualização em atualização.
Portanto, vamos em frente e programemos isto para o bot.
Abra o código.
Agora vamos acrescentar este mesmo lugar.
Temos acrescentado todo o resto.
Portanto, apenas vaguear nulo.
E aqui, eventualmente, vamos usar o Sikh.
Mas antes de mais nada, precisamos calcular todo o valor.
Portanto, precisamos de um carro alegórico para o raio de flutuação.
E vamos definir isso para dez.
Então precisamos de um carro alegórico para percorrer a distância.
Ajuste isso para 20.
E então precisamos de um carro alegórico para Wanda Jeter.
E vamos colocar isso a um que realmente não é muito Jeter.
Está bem.
Portanto, estes valores aqui são os que você quer mudar.
Se você quiser mudar o comportamento das perambulações reais, e você poderia torná-las públicas flutuando no topo de seu código
para que você pudesse acessá-las através do inspetor e alterá-las ali dentro.
Agora precisamos de um alvo Wanda.
Que querem um alvo precisa ser atualizado a cada vez com um novo valor que a posição alvo vai mover, o que significa que precisamos continuar
lembrando onde estava para não podermos colocá-lo em uma variável local.
Vou apenas colocá-lo acima do meu método aqui para que você possa vê-lo em vez de ir até o topo
do código.
Mas se você gostaria de manter tudo bonito e arrumado, então você poderia colocá-lo lá em cima.
Portanto, vou fazer apenas este vetor 3. 0 para começar.
Certo.
Então, o que vamos fazer depois de termos feito isso, queremos colocar a Wanda como alvo.
Mais equivale ao novo vetor três.
E vamos escolher um valor aleatório entre menos um e um multiplicado pelo nosso valor de agitação, e isso vai
nos permitir avançar e retroceder.
Portanto, o intervalo é aleatório entre -1. 0 F e 1. 0 F multiplicado pelo nosso tremor maravilhoso.
Isso é pelo nosso valor X.
O valor Y vai ficar em zero porque não queremos afetar isso.
E então, para o valor Z, coloque uma vírgula no intervalo aleatório, a mesma coisa novamente, -1. 0 F e 1. 0 F multiplicado pelo nosso tremor
maravilhoso.
E depois fechamos isso.
Isso nos dará um novo alvo que move o alvo existente para o alvo, que inicialmente é zero.
Agora que queremos atingir realmente o alvo, temos que estar sentados na circunferência do círculo.
Assim, uma vez modificado aqui, você vai terminar com uma posição que está na direção do círculo,
mas não mais sentado no círculo.
Portanto, precisamos fazer algumas coisas para colocá-lo de volta na circunferência do círculo.
Portanto, vamos, antes de mais nada, normalizá-la.
Portanto, queremos normalizar o ponto-alvo, o que o reduzirá a um comprimento de um.
E então vamos um para o alvo multiplicado é igual a um para o raio para empurrá-lo para fora no comprimento certo.
Certo.
Portanto, essencialmente, o que fizemos aqui foi criar este alvo errante, que está sentado na circunferência
de um círculo que está atualmente posicionado ao redor do agente, que tem um centro000.
Mas nosso círculo, lembre-se, é na verdade compensado pela distância de deslocamento.
Portanto, o que precisamos fazer com ele é criar uma posição que esteja na frente de nosso agente.
Então vamos criar um alvo vetorial três e vamos chamar isso de local porque é local para o agente,
como se o agente fosse atualmente o centro do mundo, como em 000.
E o círculo está sentado ao redor do agente, então vamos ao alvo local que vai igualar o alvo
mais três zero efetivo na direção Z, zero na direção Y, e depois percorremos a distância na direção Z porque estamos
movendo-o para frente do agente.
Portanto, quero uma distância que mova nosso alvo local para fora.
Em seguida, precisamos transformar esse alvo local em uma posição mundial que possamos então buscar.
Portanto, só precisamos convertê-lo para o mundo alvo que se igualará a este ponto-objeto de jogo de transformação de pontos.
E assim como antes tínhamos o vetor de transformação do espaço mundial para o espaço local, agora vamos voltar para
o outro lado.
Assim, o vetor de transformação inversa e o alvo local.
E agora temos uma posição mundial que podemos buscar.
Então ponha-se a buscar o alvo.
Mundo.
Agora, para que esta maravilha aconteça, não se esqueça de mudá-la em sua atualização.
Portanto, vamos apenas colocar a Wanda lá dentro.
Está bem?
Vamos salvar isto e vamos voltar à unidade.
Muito bem.
Então vamos brincar com a imprensa e dar uma olhada no movimento deste cara.
Certo.
Você pode ver um pouco de movimento.
Certo.
Sempre decidiu mudar de direção.
E isso porque temos um valor negativo ali dentro, o que nos permite criar direções negativas
e dar a volta ao bot.
Ele não é muito errático porque nossa Wanda Gita é bem pequena.
Portanto, voltemos agora ao nosso código e mudemos isso.
Então, aqui está nossa Wanda Gita.
Vamos mudar isso para dez e dar uma olhada em como isso afeta nosso agente.
Portanto, economize isso.
Vamos repetir.
Então, vamos encontrá-lo.
E ele é mais errático no que diz respeito à mudança de direção e até mesmo apenas de um lado para o outro vagando.
Você pode ver ali.
Portanto, as outras coisas que você pode tentar se voltarmos ao nosso código novamente é aumentar o raio de passeio, o que vai
tornar esse círculo maior.
Portanto, se você colocar isso a uns 50 e a distância, se você aumentar a distância do círculo, então à medida que você se afasta
cada vez mais desse círculo, então seu ponto alvo está se afastando cada vez mais,
o que significa que você vai ter um movimento um pouco mais suave ao fazer isso.
Mas tenha muita certeza de que a posição que você está calculando existe em sua malha de navegação.
Está bem?
Caso contrário, você poderá ter problemas quando tentar definir o local para que seu agente se mude para uma posição
que na verdade não esteja na malha de navegação.
Portanto, certifique-se de ter uma enorme malha de navegação ou de manter estes valores razoáveis.
Vamos apenas guardar isso em 50 por raio e vamos ver como isso afeta nosso comportamento.
Portanto, voltaremos aqui.
Certo.
Então, exatamente o que eu estava apenas mencionando.
Agora você pode ver que ele tentou produzir alguns pontos ali e decidiu não fazer absolutamente nada inicialmente por causa
desses valores aleatórios e onde ele estava produzindo o círculo.
Então, acho que você pode imaginar que o raio deste cara, nós apenas fazemos zoom nele.
E se eu fizer um pouco de zoom, é que o que estava acontecendo ali teria sido que o círculo provavelmente
estava em torno desta área aqui.
Certo.
E havia pontos ao longo desta parte que estávamos criando, mas não há malha de navegação para esses.
Mas quando entramos neste lado do círculo, ele estava criando-as e depois permitiu que ele realmente se virasse depois de
ter ficado ali parado e não ter feito nada por um pouco de tempo.
Mas, se você mudou sua distância de passeio de modo que é como se o círculo estivesse na terra de ninguém aqui fora, então
nenhum ponto desse círculo estará em sua malha de navegação e, portanto, isso causará um problema.
Portanto, com isso em mente, vamos deixar nossa caminhada como inicialmente a tivemos.
Vamos colocar nosso raio de volta ao C dez, acho que foi e o Gita de volta a um.
Portanto, vamos torná-lo um pouco mais agradável e um pouco menor.
Agora, é verdade, ele poderia caminhar até a borda do mapa e depois simplesmente parar ali.
Mas desde que você tenha um raio suficiente ao seu redor, então você será capaz de virá-lo em algum momento.
Agora, se olharmos para isto, a distância para este círculo é 20, e então ele vai ter um raio
de dez, o que significa que não vai contornar o agente ou sobrepor o agente.
Portanto, talvez se baixarmos para dez também aqui, podemos ter certeza de que o círculo será sempre ligeiramente
compensado pelo agente, mas também por trás do agente.
Assim, o agente vai dar a volta e ser autorizado a dar a volta nessa malha de navegação.
Se você não estiver usando uma malha de navegação e estiver usando como três coordenadas D em uma espécie
de mundo aberto e livre, sabe, tudo bem, você não terá o mesmo problema que terá quando tentar executar o agente
definir o destino para um ponto que não existe.
Certo, então isso é deambular e algumas das pequenas nuances a ver comambular e você pode ver como
é muito ajustável apenas brincando com esses valores.