O comportamento maravilhoso é o que você quer que um personagem faça quando não tem um local oficial para o objetivo.
Eu acho que você poderia considerá-lo 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 local para outro de maneira errática.
Neste vídeo, todos analisamos apenas uma maneira de produzir uma boa caminhada.
Ele funciona usando 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 a
frente ao redor do círculo.
O agente tem seu destino atualizado e muda de direção.
Existem três variáveis que definem basicamente esse sistema e como ele faz com que o agente se comporte.
A distância do desvio, que é a distância do agente até o meio do círculo, o raio da
maravilha que define o tamanho do círculo e a instabilidade da maravilha que influencia a maneira como o local de destino
se move de atualização para atualização.
Então, vamos em frente e programar isso no bot.
Eu coloquei o código.
Agora vamos adicionar esse mesmo lugar, adicionamos todo o resto, então anule a Wanda e
aqui eventualmente usaremos a busca.
Mas primeiro precisamos calcular todo o valor.
Então, precisamos de um carro alegórico para Wanda.
Raio e definiremos isso 10.
Então, precisamos de um ponto flutuante para 1 na distância definida como 20 e depois precisamos de um ponto flutuante para o tremor de Wanda e
o definiremos para 1, que não é realmente muito tremido.
Tudo bem, então esses valores aqui são os que você deseja alterar se quiser alterar o comportamento
da perambulação real e poder fazê-los flutuar publicamente na parte superior de suas cartas.
Você pode acessá-los através do inspetor e alterá-los lá.
Agora, precisamos de uma meta de Wanda, que precisa ser atualizada a cada vez com um novo valor que a posição
de destino irá mover.
O que significa que precisamos continuar lembrando onde estava, para que não possamos colocá-lo em uma variável local.
Vou colocá-lo acima do meu método aqui para que você possa vê-lo, em vez de subir ao topo
do código.
Mas se você quiser manter tudo bonito e arrumado, poderá colocá-lo lá em cima.
Então, eu vou fazer esse vetor 3. 0 para começar com Ok, então o que faremos depois de fazer
o que queremos colocar um.
O alvo mais é igual a nova vítima 3.
E vamos escolher um valor aleatório entre menos 1 e 1 multiplicado por um valor de jitter.
E isso nos permitirá avançar e retroceder.
Portanto, um intervalo aleatório de pontos entre menos um ponto zero F e um ponto zero f multiplicado pela letra i.
Isso é para o nosso valor x, o valor y começará em zero, porque não queremos afetar isso.
E depois para a vírgula do valor z e o intervalo de pontos aleatórios.
A mesma coisa novamente menos um ponto zero F e um ponto zero f multiplicado por j imaginou jitter
e então apenas fechamos isso.
Ok, então isso nos dará um novo alvo que move o existente para o alvo que é inicialmente zero.
Agora que o alvo deseja realmente deve estar sentado na circunferência do círculo.
Então, uma vez modificado aqui, você terminará em uma posição que está na direção do círculo, mas não
está mais sentado no círculo.
Então, precisamos fazer algumas coisas para colocar de volta na circunferência do círculo.
Então, vamos antes de tudo normalizá-lo.
Então, deseje segmentar o ponto para normalizar o que você reduzirá para um comprimento de
1 e, em seguida, escolheremos um para segmentar multiplicado por igual ao raio de maravilha para empurrá-lo para o comprimento certo.
OK.
Então, essencialmente, o que fizemos aqui é que criamos esse alvo de Wanda, que está sentado na circunferência
de um círculo que atualmente está posicionado em torno do agente que tem um centro 0 0 0, mas que nosso círculo
se lembra de fato é compensado pela distância ferida .
Então, o que precisamos fazer é criar uma posição na frente do nosso agente.
Então, vamos criar um alvo de vetor três e vamos chamá-lo de local porque é local para o agente, embora
o agente atualmente seja o centro do mundo em 0 0 0 0 e o círculo esteja
ao redor do agente.
Então, vamos direcionar os locais de destino para igualar o alvo de Wanda mais o vetor 3 0 na direção z zero na ação mais
ampla e depois percorreremos a distância na direção z porque estamos avançando a partir do
agente.
ESTÁ BEM.
Então, eu quero a distância que move nosso alvo local, então precisamos transformá-lo em uma
posição mundial que possamos buscar.
OK, então só precisamos convertê-lo para o mundo alvo, que será igual a essa transformação de ponto do objeto do jogo de pontos.
E exatamente o que tínhamos o vetor de transformação antes para ir do espaço mundial para o espaço local, agora podemos voltar para
o outro lado.
Vetor de transformação inversa e alvo local.
E agora temos uma posição mundial que podemos buscar.
Então coloque procurar mundo alvo.
Agora, para que essa maravilha aconteça, não se esqueça de alterá-la na sua atualização.
Então, vamos colocar a maravilha lá dentro.
ESTÁ BEM.
Vamos salvar isso e voltar à unidade.
Tudo certo.
Então, pressione play e dê uma olhada no movimento desse cara.
Você vê um pouco de movimento.
ESTÁ BEM.
O que sempre decidiu mudar de direção.
Isso porque temos um valor negativo, o que deve nos permitir criar direções negativas
e virar o barco.
Ele não é muito errático porque nosso Gita errante é pequeno.
ESTÁ BEM.
Então, agora vamos voltar ao nosso código e mudar isso.
Então, ele é uma Julia procurada, vamos mudar isso para 10 e ver como isso afeta nosso agente.
Então salve isso, vamos executá-lo novamente.
ESTÁ BEM.
Então, vamos encontrá-lo e
ele é mais instável quanto a mudar de direção e até mesmo de um lado para o outro vagando.
Você pode
dizer que eles estão bem, isso é ótimo.
Então a outra coisa é que você pode tentar.
Voltamos ao código do livro novamente e aumentamos o raio de maravilha que aumentará esse círculo.
Então, se você colocar isso em 50 e a distância, se você aumentar a distância do círculo, à medida que você
move esse círculo cada vez mais longe, então seu ponto alvo
está ficando cada vez mais longe, o que significa que você ficará um pouco mais movimento mais suave ao fazer isso, mas para ter certeza de
que a posição que você está calculando existe na sua malha de navegação.
Caso contrário, você poderá ter problemas ao tentar definir o local para o seu agente avançar para uma posição
que realmente não esteja na malha de navegação; portanto, verifique se você tem uma malha de navegação enorme
ou se mantém esses valores razoáveis.
Vamos apenas salvar isso em 50 raios e vamos dar uma olhada em como isso afeta nosso comportamento.
Então, vamos voltar aqui.
Então, exatamente o que eu estava mencionando, agora você pode ver que ele tentou produzir alguns pontos lá e
decidiu não fazer absolutamente nada inicialmente por causa desses valores aleatórios e onde estava produzindo
o círculo.
Então, eu acho que você pode imaginar que o raio desse cara é só dar um zoom nele e diminuir um pouco.
É isso que estava acontecendo lá? O círculo provavelmente estava em torno desta área aqui.
OK.
E havia pontos ao longo desta parte que estávamos criando.
Mas não há malha de navegação para eles.
Mas quando entramos neste lado do círculo, eles foram criados e, em seguida, permitiram que ele realmente se virasse depois que
ele estivesse lá e não fizesse nada por um tempo.
Mas se você mudasse sua distância percorrida, de modo que o círculo fosse exatamente como na terra de
ninguém aqui, então.
Não faz sentido que esses círculos estejam em sua malha de navegação e, portanto, isso causará um problema.
Então, com isso em mente, vamos deixar nossa perambulação como tínhamos inicialmente.
Vamos colocar nosso raio de volta em, digamos, 10, acho que estava e lá devido a voltar a 1.
Então, vamos torná-lo um pouco melhor e um pouco menor agora.
Concedido que ele poderia caminhar até a borda do mapa e depois parar por aí.
Mas contanto que você tenha um raio de raio suficiente ao seu redor, poderá girá-lo em algum
momento.
Agora, se olharmos para isso, a distância para este círculo é 20 e, em seguida, ele terá um
raio de 10, o que significa que ele não contornará o agente.
Então, talvez, se reduzirmos para 10 aqui também, podemos ter certeza de que o círculo sempre
será ligeiramente desviado do agente.
Mas por trás do agente também.
Portanto, o agente irá se virar e poderá se virar nessa malha de navegação.
Se você não estiver usando uma malha de navegação e estiver usando três coordenadas em uma espécie de
mundo livre aberto, então tudo bem, você não terá o mesmo problema que terá ao tentar executar o destino do conjunto
de pontos do agente para um ponto que não existe.
OK.
Essa é a Wanda e algumas das pequenas nuances da Wanda e você pode ver como é muito
ajustável apenas brincando com esses valores.