O comportamento da busca é um pouco como procurar, exceto que, em vez de seguir um alvo,
o agente prediz onde o alvo estará no futuro para interceptá-lo.
Vemos isso ocorrendo o tempo todo em jogos esportivos.
No caso do futebol, a bola real fornece aos jogadores a posição futura prevista
de seu oponente.
Agora, a fim de determinar a localização de nosso perseguidor, o ladrão deve seguir em direção.
Precisamos obter a posição do alvo na direção da viagem e sua velocidade.
Também precisamos da velocidade de busca e de sua distância em relação ao alvo, pois eles dependerão da rapidez
com que a borracha possa alcançar.
Podemos então prever para onde o perseguidor deve ir com base nesses valores e calcular a que
distância do alvo o perseguidor deve apontar.
Como a distância entre o perseguidor e o alvo é dividida pela adição das velocidades dos dois agentes, vamos em frente
e implementar isso em nosso script de caixa.
Então abra seu código bot e nós vamos colocar perseguir e fugir.
Apenas fique aqui.
OK.
Portanto, a perseguição terá seu próprio método, obviamente, para evitar perseguir.
E então, aqui dentro, o que vamos fazer é antes de tudo calcular o vetor para
o alvo, para que o vetor 3 DJI alvo seja para que a direção seja a posição do ponto de transformação do ponto alvo menos a posição do
ponto de transformação do ponto.
Agora que conseguimos isso, podemos realmente avançar e calcular o futuro.
Então, até onde vamos olhar além da direção voltada para a frente do alvo.
Portanto, olhe para frente e é aqui que estamos prevendo a localização futura.
Tudo bem, então será alvo da magnitude do ponto R de DIY e vamos dividir isso pela velocidade dos
agentes, para que a velocidade do ponto do agente mais a velocidade da unidade que está acontecendo com a polícia para fazer isso.
Serão os componentes do ponto get get para o script da unidade.
E lembre-se de que criamos a velocidade atual ou eu a criámos e a mostramos antes, onde
atualizamos a velocidade real e a transformamos em um valor público para que você possa acessá-la novamente
no script da unidade.
Ok, então isso está dando uma olhada no futuro.
E então o que vamos fazer para isso é realmente procurar.
Então, procuraremos a posição do ponto de transformação do ponto alvo mais o olhar à frente, mas o olhar à frente usaremos como um multiplicador contra o
vetor forward K dos alvos, para que o vetor forward seja a maneira que o alvo
esteja voltado e viaje do ponto a frente .
E ele tem um comprimento de um, por isso é automaticamente normalizado para nós, então multiplicando isso pelo
olhar à frente nos dá um vetor que é o comprimento do olhar à frente e, portanto, estamos adicionando isso à busca.
Ok, então temos o que temos agora ou precisamos fazer isso com a atualização e basta alterar
isso para prosseguir para que possamos executá-lo.
OK.
Então, vamos salvar isso e voltaremos à unidade e vamos pressionar play.
OK.
Então você pode ver que ele está vindo para o policial, mova o policial e,
se mudarmos de direção, você verá que ele estará prevendo a direção futura e não apenas seguindo cegamente.
Eu acho que você pode apenas ver.
Quão longe está olhando para o futuro.
Nesse caso, agora, quanto mais rápido eles estiverem, mais olhando para o futuro que acontecerá.
Agora, você também deve ter notado que, quando a borracha chega ao copo, ele cai em cima do copo, o que não é
exatamente o que você deseja, mas que ele pare um pouco mais longe.
Agora isso é realmente uma dinâmica do agente de malha nav e você pode consertar isso.
Se você selecionar a borracha e, no inspetor, modificará a distância de parada.
No momento, eu tenho um se eu definir isso para dois e depois pressionarmos o play, ele irá parar a uma
distância de dois do local do gol.
Agora, se você quer forçar isso a olhar um pouco mais para frente do que realmente é, não
consegue vê-lo ali.
Vamos voltar ao nosso código e podemos multiplicar isso ainda mais.
Por isso, é realmente olhar mais longe do que olhar para o futuro.
Vamos multiplicar por cinco.
Só para dar uma boa olhada à frente, eu acho.
Vamos voltar e pressionar play agora, o que você encontrará enquanto olha para o futuro.
Agora meu chefe nem vai nesse ponto, mas quando você começa a adicionar uma velocidade, eles olham para o futuro.
Vamos dar a volta e lá vai você.
Então agora o cálculo para o futuro se tornou bastante grande.
Então é a velocidade que ele estava indo nessa direção.
E os bots acabaram por lá em algum lugar na borda do mapa.
No entanto, se isso está acontecendo, o que não deveria, porque você não
pretende multiplicar esse olhar à frente, você pode corrigi-lo colocando outra condição para testar se o seu policial seu alvo parou de
se mover; nesse caso, você entraria em uma Sikh.
Portanto, essa é uma das condições extras que você pode adicionar a esse objetivo.
E o que também faremos é melhorar isso, adicionando algumas outras condições que tratam se você deve procurar
ou se deve realmente olhar para o futuro primeiro, é claro.
Uma condição que consideraremos é que, se o alvo parou de se mover, transformaremos a busca
em um sikh e seguiremos em direção ao alvo.
A próxima condição que consideraremos é que, se o ladrão estiver na frente
do policial e já estiver na mesma direção, o ladrão deverá se virar e procurar o policial.
Então, como determinar se o ladrão está na frente do policial.
Bem, usamos ângulos e usaremos os ângulos entre os vários vetores que já usamos.
Quando o ladrão está na frente do policial, o ângulo entre o vetor avançado
do ladrão e o vetor é maior que 90 graus quando o ladrão está atrás do policial.
O ângulo agora será inferior a 90 graus se o ladrão estiver na frente do policial, ele já deve
ter se virado para ir em direção ao ponto de interceptação.
Se for esse o caso, não queremos que ele procure.
Em vez disso, temos que restringir nossas condições para buscar ainda mais considerando o ângulo entre
as duas direções dos agentes.
E se isso for muito pequeno, permitiremos que a busca se transforme em um sikh, então vamos em
frente e adicionamos essas condições ao método de busca.
Então o primeiro que temos é se o alvo parou de se mover para que possamos testar isso.
Se a velocidade é essa aqui, apenas copiamos que, se a velocidade for menor que zero, ponto zero um.
Se e estou dizendo isso, em vez de dizer igual a zero, porque às vezes você recebe uma seta flutuante com
valores zero e ela pode não ser igual a zero.
Pode ser um número muito pequeno.
Então, fazendo isso, você meio que se esconde dizendo que, se ainda estamos em
pé, nosso objetivo é o sikh.
Então, apenas vamos procurar o alvo.
Portanto, o ponto alvo transforma a posição
do ponto e também retornamos, em vez de continuar neste método.
Agora, as outras coisas que queremos testar são o cabeçalho relativo do agente.
Portanto, se tivermos um pequeno ângulo pequeno entre as direções avançadas dos agentes, faremos com que nosso agente siga
ou procure o alvo em vez de olhar para o futuro.
Então, precisamos calcular esse ângulo específico.
Então, vamos flutuar na direção relativa ou chamá-lo igual ao ângulo de três pontos do vetor e esse ângulo ficará
entre esse ponto de transformação de ponto para frente e queremos obter o vetor para frente do policial ou
do alvo.
Agora temos que obter o vetor direto relativo ao agente real, o que significa
que precisamos converter esse vetor, que é a direção 4 do alvo, no espaço do agente.
O que isso significa basicamente é que você está tornando esse agente o ponto de origem de seu próprio
conjunto de coordenadas cartesianas e, em seguida, projetando o vetor avançado do alvo naquele carro.
Portanto, é realmente muito fácil de fazer.
Você recebe a transformação.
Portanto, essas tendências de ponto formam ponto e ele tem seu próprio método de transformar vetor e
o vetor que você deseja transformar é o ponto de transformação de destino como esse.
Então você está apenas colocando-os no mesmo espaço, no mesmo espaço relativo.
Então esse é o seu ângulo entre as direções para a frente.
Agora também queremos obter o ângulo entre a direção direta do agente e a direção do
alvo.
OK.
Então, isso será flutuado para atingir o mesmo ângulo de três pontos do vetor.
E novamente é esse ponto transformado ou encaminhado.
E, novamente, precisamos fazer esse vetor de transformação de pontos e o vetor de transformação de pontos e o vetor, neste caso, é
o desejo alvo que calculamos imediatamente antes de K, então agora temos esses dois ângulos que
podemos colocar aqueles em nossa declaração if também, então vamos colocá-los aqui e vai ser
o alvo e veremos se é maior que 90 e nosso rumo relativo é menor que 20 graus.
E nós faremos isso com a velocidade do alvo.
Portanto, essas são nossas condições nas quais, na verdade, realizaremos um sikh.
ESTÁ BEM.
Então, vamos salvar isso e voltaremos à unidade.
Aperte o play e experimente agora, devido
às velocidades e ângulos reais desses caras, é realmente difícil ver se ele está
procurando ou se de fato ele está olhando para o
futuro, mas está simplesmente começando.
E faz toda a diferença que esses cálculos sejam corretos quando você avança para
outros comportamentos que realmente são baseados na busca.