Nesta palestra, vamos começar a escrever o código para dirigir o carro com um controlador de inteligência
artificial.
Portanto, o que precisamos considerar é a direção para frente do carro e o vetor para o ponto de passagem.
A partir daí, podemos trabalhar o ângulo de viragem que o carro precisa girar para começar a virar na direção do ponto
de passagem.
E para fazer isso, podemos simplesmente usar alguma trigonometria simples do ensino médio.
Portanto, se você se lembrar de suas regras sobre bronzeado, cosseno e seno para encontrar os ângulos de um
triângulo de ângulo reto, você pode realmente construir um triângulo de ângulo reto como este onde você tem seus
valores X e Z, que é basicamente a distância entre seu veículo e o próximo ponto de passagem.
Agora, usando um dez dois nos permitirá também encontrar o ângulo completo baseado no quadrante em que o ângulo
aparece.
Agora, não vou entrar nessa matemática para você, mas se você quiser dar uma olhada
no recurso anexado, ele passa por dez dois e como isso difere ligeiramente de dez e por que podemos nos safar ao encontrar aquele ângulo completo quando
o ângulo não está realmente dentro do triângulo do ângulo reto que construímos.
Muito bem.
Então, vamos começar com o roteiro.
Vamos criar um novo roteiro afiado em C e vamos chamá-lo de A. I. Controlador.
E que A. I. controlador vai seguir para nosso carro.
Assim, uma vez que a compilação terminar, basta arrastá-la e soltá-la aqui no carro e depois verificar se ela
está lá.
Certo, vamos abrir isso.
Portanto, ele precisa saber sobre o roteiro da unidade para que eles possam realmente chamar o método go para aqueles.
Portanto, aqui vamos primeiro adicionar um drive array dos scripts de drive como esse e depois, no início, vamos pegar todos
eles.
Assim, os scripts de direção, DS vai igualar este componente em direção infantil.
Portanto, isso só vai pegar automaticamente todos esses scripts para você e garantir
que você use a versão plural dela, porque não vamos colocar componentes nas quatro rodas que
você adicionou ao seu veículo em particular.
Certo.
Portanto, além de todos eles, queremos também obter o circuito.
Por isso, vamos colocar o circuito público.
E isto apontará então para o circuito que você criou para o carro.
Também precisamos de um carro alegórico público para a sensibilidade da direção e vamos definir que seja igual a 0. 01 F inicialmente.
Então precisamos de um vetor três para o alvo para o qual estamos caminhando atualmente e precisamos de uma INT para nosso
ponto de passagem atual.
Agora você já viu isso antes, porque nós já fizemos círculos em torno de pontos de passagem com nossos tanques, o que já fizemos.
Mas neste caso em particular, é um pouco diferente porque estamos nos dirigindo para os pontos
de passagem em vez de apenas deslizar o veículo inteiro através deles.
Certo.
Assim, o que queremos fazer no início, para começar, é definir nossa
meta para o primeiro waypoint de modo que ele seja igual ao waypoint do circuito, o waypoint de corrente transforma a posição do ponto assim.
Ok, então é só guardar isso e voltaremos a nos unir e configurar essas coisas.
Então, com nosso carro, temos nosso circuito aqui, vamos apenas arrastar e soltar isso para dentro dele para que ele possa pegar
aqueles pontos de passagem.
E por um momento, vamos voltar ao nosso roteiro de viagem.
Porque aqui queremos este código.
Vamos agarrar isto porque isto não será mais usado dentro da unidade.
Portanto, basicamente queremos o meio disto, mas depois vamos comentar toda esta atualização porque não queremos que
ela funcione de forma independente.
Ok, então salve essa mudança de volta ao nosso controlador e cole aqui seu código.
Agora isto precisa ser executado em todos os scripts de acionamento aqui em cima, então vamos ter um pouco de loop.
Portanto, quatro int i é igual a zero i é menos do que o comprimento do ponto d.
Você também poderia usar a4h.
Acho que estou apenas mais familiarizado e vou direto para um loop normal quando estou codificando e vamos colocar isto assim
e depois precisamos conseguir.
Índice de I ponto go and run que vai agora você pode ver que não está gostando só aqui se mudarmos de volta para o roteiro da unidade
e você der uma olhada no go, não é público.
Portanto, precisamos tornar isso público para que possamos acessá-lo de volta.
I Controlador Então, salve isso.
Vamos voltar aqui e você vai notar que não está mais lido para que você possa salvar
isso e isso vai fazer funcionar nosso carro agora o A e o SE que não vamos mais usar.
Na verdade, queremos programar esses valores em.
Mas com isto aqui dentro agora podemos realmente verificar se ainda está funcionando corretamente, como as rodas e tudo
vai funcionar.
Portanto, vamos agora pressionar o jogo e verificar se temos tudo isso configurado corretamente.
Portanto, as rodas estão girando e ainda podemos ir em frente e podemos girar.
Portanto, esses comandos estão passando muito bem.
Certo.
Portanto, vamos agora continuar olhando para nosso controlador aéreo.
Portanto, vamos nos livrar desses valores ou, de fato, vamos deixá-los ali, porque em vez de usar
o eixo get e o vertical e horizontal para esses, vamos programá-los com base nos ângulos que precisamos
virar entre nossos pontos de passagem.
Muito bem, vamos colocar o resto do código.
A primeira coisa que vamos precisar na parte superior aqui é uma carroceria rígida para a carroceria rígida que está
presa ao carro, porque precisamos saber quão rápido ele está indo, que é sua velocidade.
Assim, no início, nosso corpo rígido será igual a este ponto para obter um corpo rígido de componentes.
Muito bem, agora na atualização, vamos descer e realmente fazer as modificações que precisamos aqui.
Vamos deixar nossa aceleração e nossa direção aqui como estão por enquanto.
Mas vamos trabalhar o ângulo entre a direção que o carro está voltado e onde está o próximo ponto de passagem.
E temos que fazer isso no espaço local, local para o carro real.
Portanto, isso significa que basicamente o valor local para o avanço do carro será sempre considerado
como sendo o ângulo zero.
E então você tem que ver o quanto tem que virar a partir dessa posição
para que possamos obter o alvo local a partir desse ponto de transformação de ponto inverso, e que obterá o alvo em relação à localização do carro.
Portanto, não importa onde está no mundo ou para que lado está virado, vai ser apenas local
para ele.
Assim, ele considera o carro basicamente em 000 e então vamos flutuar a uma distância de três pontos
entre o alvo e o vetor.
E eles se transformam.
Posição do ponto.
E então podemos calcular o ângulo.
Portanto, o ângulo do alvo de flutuação é igual a f ponto matemático.
Um dez para o alvo local, ex alvo local.
Dot Z multiplicado por maf f dot rad a graus porque a unidade funciona quando faz qualquer cálculo de ângulo ou funções de ângulo funciona em radianos
e precisamos dele em um poço, não precisamos dele em graus.
Faz mais sentido para nós quando está em graus.
Agora, a aceleração, vamos colocar isso apenas como 0. 5 F, vamos apenas colocá-lo em uma aceleração estática
e a direção.
Vamos calcular isso do nosso ponto de vista.
Por isso, aqui dentro, vamos fazer uma grampo matemático.
Vamos fixar o ângulo do alvo multiplicado pela sensibilidade da direção.
Vamos prendê-lo entre menos um e um, como fizemos anteriormente, porque basicamente
queremos que esta seja uma porcentagem de -1 a 1.
Agora, quando estivermos trabalhando o ângulo, será determinado para que lado estamos realmente virados ou para
que lado o carro está virado.
Porque se está virado, por exemplo, para cima assim e você quer virar para este, então você realmente tem que
virar no sentido anti-horário.
Se o carro estiver virado para baixo e tiver que ir até aqui, então você realmente no mundo você tem que encarar
ou girar no sentido horário.
Portanto, importa de que forma o carro está virado e podemos obtê-lo a partir da velocidade real do carro, e
é por isso que adicionamos nossa carroceria rígida para que possamos ir bem a matemática.
Queremos até mesmo saber o sinal da velocidade.
Tão rígida a magnitude da velocidade do corpo que será a velocidade, quer seja para frente ou para trás.
E uma vez que tenhamos feito isso, podemos então dar a volta e realmente passar tudo para nossos acionamentos
de rodas.
Depois disso, precisamos atualizar nossos pontos de passagem.
Portanto, apenas uma simples declaração aqui, se a distância até o alvo for inferior a dois.
Portanto, se chegarmos a dois deste ponto de passagem específico, o ponto de passagem atual aumentará para o próximo
da lista se o ponto de passagem atual for maior ou igual ao comprimento dos pontos de passagem do circuito.
Portanto, ficamos sem pontos de passagem.
Então precisamos apenas voltar ao primeiro novamente porque é um circuito, então o ponto de passagem
de corrente será igual a zero e então poderemos ir ao alvo.
Atualização que o alvo é igual a ponto de circuito ponto de passagem de corrente ponto de passagem de corrente posição de transformação como essa.
Ok, então estamos prontos para experimentar isto.
E acabei de notar que tenho um suporte extra flutuando ao redor do fundo da minha classe.
Deixe-me só me livrar disso.
Certo.
Caso contrário, o código está pronto para ser usado.
Portanto, vamos salvar esse interruptor de volta à unidade.
E agora que você está aqui, estes waypoints são cubos, então você quer selecioná-los todos e, e marque a
caixa.
Collider Ok, caso contrário, seu carro vai esbarrar neles, o que você não quer mais tarde.
Se você não quiser nem mesmo ver as caixas, você pode desligar a caixa.
Collider Eu sempre uso um cubo para que eu possa apenas ver um local no mundo que ajude para fins de depuração,
certo?
Vamos brincar com a imprensa e ver o que acontece.
Então, todo o carro está girando.
Agora, para onde vai?
Este é o Waypoint one.
Se eu selecioná-lo, você pode realmente ver que ele está lá agora mesmo.
Está tentando chegar a 8. 1 e vai dar a volta ao ponto um e vai dar a volta ao ponto dois?
Agora está circulando por aí.
Agora esta é uma questão comum que você tem com pontos de passagem.
E você pode se lembrar por que já cobrimos isso em outros tutoriais de waypoint?
Portanto, este é o desafio.
Portanto, se você puder consertar isso antes de voltarmos e conseguirmos que o carro contorne cada um desses waypoints, faça uma pausa no
vídeo.
Agora, quando eu voltar, continuarei a passar por isso com você.
Certo.
Bem-vindo de volta.
Como você foi?
Bem, a razão pela qual um NPC vai circundar um ponto de passagem é porque ele nunca pode se aproximar o suficiente do valor
da distância aqui para ser considerado próximo a ele.
Por isso, em vez disso, vou mudar isso para assim.
Portanto, podemos definitivamente chegar a quatro deste ponto de passagem, salvo isso, vamos voltar à unidade.
Naturalmente, você também pode aumentar a sensibilidade da direção e o máximo de giro em todos esses tipos de coisas,
o que também influenciaria nisso.
Mas este é um carro, então você não quer realmente que ele gire muito brusco.
Certo.
Assim, agora que se considera que chegou ao Waypoint one, que é este aqui, o segundo
waypoint é este aqui.
Então, vai até lá.
Depois, uma vez que o tenha feito, vai se voltar para o Waypoint três e passar por ele.
E depois, eventualmente, vai até a quarta.
E agora, na verdade, está contornando bem nosso circuito.
Está bem.
Portanto, esse é o sistema básico de waypoint e direção em vigor.
Quando voltarmos no próximo vídeo, vamos realmente trabalhar para melhorar este código para nosso controlador
AI.