Nesta palestra, vamos acrescentar um pouco de código extra para fazer os carros se afastarem uns dos outros
se houver uma colisão.
E este código ajudará os carros a passarem uns pelos outros também.
Portanto, o que vamos fazer é pegar o ponto de cápsula ou nosso ponto de rastreamento para o qual estamos tentando
dirigir e movê-lo por um certo desvio, se detectarmos uma colisão.
Então, vamos levar o carro que está atrás neste caso.
Quando ele se choca com o carro à nossa frente, vai provocar uma colisão em ambos os carros.
O roteiro dos dois carros vai recalcular uma nova posição de objetivo que é baseada na posição do rastreador, além de
um pouco de compensação.
E o que vai fazer é fazer um carro virar em uma direção e o outro virar na outra,
o que lhe dará uma dinâmica de evasão realmente interessante com um código relativamente simples.
E o que vamos fazer é usar os colisores e a carroceria rígida que já está no carro.
Certo.
Portanto, vamos acrescentar o código.
Para fazer isto, você precisará de um roteiro chamado detector de vazios, e você pode ver como ele é derramado aqui.
Portanto, é só acrescentar um roteiro afiado em C ao seu projeto.
Vamos abrir isso e acrescentar o código.
Portanto, no topo, vamos adicionar em um público.
Flutuar.
Evite o caminho.
Igual a zero.
Flutuador público.
Evite o tempo.
Igual a zero.
E estas são configurações que vamos usar de outros lugares.
Mas você também pode se instalar no inspetor.
Então queremos um carro alegórico público para percorrer uma distância de passeio igual a zero.
E isso vai ser o quão longe podemos realmente nos afastar do caminho.
Na verdade, não vamos fazer esse zero.
Vamos fazer com que isso e o público flutue por um comprimento vazio, que é quanto tempo queremos continuar evitando.
Quatro.
Portanto, este é o momento em que queremos seguir nosso caminho evitador.
Agora não vamos usar um começo e uma atualização nestes.
Vamos usar valores de gatilho para determinar quando devemos nos mover.
Por isso, queremos o vazio na chamada do colisor de saída do gatilho e vamos basicamente descobrir quando dois carros se aproximaram
um do outro e depois usar isso para realmente colocar algum código evitador.
Portanto, coletar a etiqueta do objeto do jogo não é igual a um carro, então vamos virar e, se isso acontecer, então vamos evitar que o
tempo seja igual a zero.
Portanto, na verdade, estamos colocando o tempo evitado em zero se estivermos saindo de uma espécie de colisão ou estando
na estrada de alguém.
Agora o código real vai acontecer para evitar quando estivermos na distância do gatilho.
Então, no gatilho, permaneça a chamada de colisão e vamos colocar o outro E de lá para fora.
Certo.
E então iremos se formos chamados de game object tag.
Não é um carro.
É claro que estamos verificando se temos uma etiqueta de carro, de modo que só estamos verificando se colidimos com carros.
Para que este roteiro funcione, por exemplo, não queremos que outras coisas funcionem como um gatilho.
Por exemplo, há qualquer outro gatilho que você possa
colocar em seu ambiente e então iremos com a carroceria rígida para o outro carro igual ao chamado get componente, a carroceria rígida evita o tempo igual ao tempo que é o tempo
agora mais o comprimento evitado.
Então criaremos um vetor três, que será o outro carro alvo local.
Assim, onde está o outro carro, com relação ao carro atual, ele vai igualar o ponto de transformação
inversa.
Mais uma vez, precisa ser relativo, não em coordenadas mundiais.
Outro carro.
Objeto de jogo de pontos.
Transformar ponto.
Posição do ponto.
Flutuar.
Outro ângulo do carro.
O ângulo em relação ao outro carro, é claro.
Portanto, esta será nossa matemática f ponto a10 dois.
O mesmo código de ângulo que usamos para nos deslocarmos em torno de nossos pontos de passagem e calcular esses outros.
CA.
Alvo local e será ponto x e depois outro alvo local ponto z.
Assim como nosso rastreador de progresso, nossos pontos de passagem.
Quando estávamos olhando para o ângulo de que lado, para que direção estávamos indo e onde
está agora, estamos fazendo isso com os carros.
Certo.
E então, vamos definir nosso caminho vazio igual à distância de deslocamento multiplicada pela matemática negativa do
outro ângulo do carro.
Portanto, estamos realmente levando o seno negativo do ângulo para o outro carro,
de modo que viramos pela mesma quantidade de ângulo na outra direção, tão longe do outro carro.
Ok, então isso é tudo o que precisamos aqui.
Vamos salvar isto e vamos voltar à unidade.
Vamos selecionar nosso carro porque precisamos colocar isto para evitar que o roteiro seja escrito.
Certo.
E vamos agarrar e colocar um detector de vazios ali.
Certo.
Portanto, aqui estão nossos valores.
A distância deambulação e o comprimento evitado das coisas com as quais você pode mudar e brincar.
As outras coisas são realmente usadas dentro de nosso roteiro de controle, portanto, abra isso.
E o que vamos fazer está no topo e você deve ter visto isso no vídeo anterior como linhas de código que ainda
não eram necessárias, esta aqui.
Por isso, queremos ter acesso ao nosso roteiro do detector de voz neste carro em particular e quando devemos guardar uma cópia
dele para que não tenhamos que obtê-lo o tempo todo.
E então, dentro de nosso início, nós realmente o configuraremos e teremos o detector de evasão que está sobre este objeto de
jogo em particular.
Muito bem.
Portanto, vamos agora usar isto dentro de nossa atualização.
Portanto, se entrarmos na atualização, você verá o código já aqui.
Por isso, eu movi as coisas um pouco.
Tudo o que eu fiz aqui no topo é um vetor três alvo local que não está mais montado aqui.
É definido com base no tempo de evasão.
Se não há tempo para evitar que isso aconteça, então temos o valor que tínhamos antes.
Caso contrário, vamos criar um alvo local diferente que inclui nosso caminho a ser evitado usando os rastreadores
na direção certa.
Portanto, o movimento lateral multiplicado pelo caminho a ser evitado.
Ou na verdade, apenas faz o que o diagrama no início desta palestra faz.
Ele apenas move o rastreador de uma forma ou de outra, dependendo de para onde queremos ir em seguida.
Certo.
Então, o ângulo alvo que estamos calculando para cima, eu também movi esse ângulo para baixo abaixo
deste código porque o alvo local é o que é usado para calcular este ângulo alvo.
Certo, agora a esta distância do alvo, tiramos na palestra anterior que eu ainda tinha ficado
por ali.
Você não precisa disso.
Obviamente, não estamos usando-o para nada.
É claro que você poderia comentá-lo neste momento.
Você pode querer usá-lo mais tarde, colocá-lo de volta como outra de suas variáveis, mas não é necessário.
Ok, então estas são as mudanças.
Vamos salvar isto agora.
Voltaremos à unidade.
Agora nosso carro precisa ter um gatilho para que ele possa realmente acionar outros carros se você selecioná-lo.
No momento, ele tem um colisor, que é muito bonito e muito ligado ao carro.
Você não quer usar isto porque quando este colisor e a versão de outro carro deste colisor bateram um no outro,
os carros realmente bateram um no outro.
Portanto, queremos um pouco de amortecedor sentado ao redor deste carro, e não queremos que esse amortecedor
seja de fato um objeto físico até uma carroceria rígida e que cause tipo de colisões físicas.
Queremos apenas como um gatilho.
Portanto, selecione o carro e, em seguida, em seu inspetor, vamos até o fundo e vamos
adicionar um colisor de caixa, então faça isso.
Então, na cena, precisamos encontrar onde isso vai dar e vai dar como aqui embaixo.
Certo.
Portanto, ele se baseia basicamente na origem do carro.
Você tem que alinhar isto basicamente com o carro.
Por isso, vamos subir.
Só precisa realmente estar ao redor da carroceria e onde quer que outros carros vão bater nela.
Então, vamos dar uma olhada.
Vamos mover o centro desta caixa colidindo para o centro do carro.
Depois do tamanho dele, podemos pegar o valor Z e se você começar a arrastá-lo, eventualmente ele irá aparecer
em ambas as extremidades do carro real.
E você pode ver que isso está chegando agora para mim.
Certo.
Agora, o fato de que não é mais alto do que este valor verde de inverno é meio certo para mim, porque nenhum outro
carro vai atirar-se a ele lá em cima.
Agora, quão perto você quer que outros carros possam chegar aos carros antes que eles decidam que eles vão desviar
do caminho?
Bem, isso dependerá do valor de seu Z aqui, de quanto espaço há em torno dele.
O outro que você vai querer é provavelmente um pouco de amortecimento lateral também, para que eles não se
aproximem.
E isso é outra coisa com a qual você pode brincar, se quiser.
Agora, uma vez que você tenha isso, você vai passar por cima e ajustar é o gatilho daquela caixa.
Collider Para que ele utilize os métodos de acionamento que acabamos de codificar.
Finalmente, você quer ir até o inspetor no topo e quer etiquetar seu carro como carro.
Se não houver nenhum carro em sua lista, você quer ir para adicionar a tag adicionar no tag car.
Usamos carro em letras minúsculas.
Certifique-se de fazer isso, depois volte para o carro e certifique-se de selecionar o carro para sua etiqueta.
Ok, bem, nós fizemos bem.
É isso aí.
Então isso é um carro.
Agora, neste ponto, é provavelmente uma boa idéia salvar seu projeto.
Continuo tendo problemas com a minha queda, que eu acredito ser meu vídeo, meu software de captura de tela.
Mas isso causa inconvenientes.
Certo.
Então, vamos acrescentar outro carro.
Portanto, selecione aquele controle de carro dx aquele carro.
E no local, vamos bater a chave e tirar aquele outro carro.
Pronto, então aí está.
Ali agora este outro carro é uma cópia exata de nosso carro aqui, o que significa que ele terá
a câmera presa a ele.
Portanto, certifique-se de ir naquele segundo carro e retire a câmera porque você só quer realmente a câmera
neste carro.
Ou você poderia tirá-lo completamente e não tê-lo em nenhum carro.
Depende do que você quer fazer com isso.
Então há um carro e vamos controlar este segundo carro porque ele não tem a câmera
e então podemos usar o W para mover isso para cá.
Controle D.
E você pode acrescentar quantos carros quiser neste ponto.
Você pode pressionar play e dar uma olhada no que você recebe.
Vou lhe dizer, não vai ser perfeito.
Na verdade, vamos voltar na próxima palestra e analisar a avaliação do que fizemos.