Certo.
Bem-vindo de volta.
Nós colocamos os carros.
Temos aí a colisão e as coisas para evitar a colisão.
Quando você pressionou o jogo, você acabou com uma pilha de carros como eu estou prestes a fazer e alguma performance estranha
das coisas?
Então, vamos dar uma olhada.
Ok, vou fazer uma pausa.
Alguns carros escaparam da colisão.
Alguns carros ainda estão tentando abrir caminho e alguns deles eventualmente começarão a dar a volta.
Este carro é uma preocupação.
Veja onde o localizadorzinho foi parar.
Então, o que aconteceu lá?
Bem, posso lhe dizer que o que aconteceu foi um locus oval de código que eu inventei.
Então vamos consertar esse primeiro com isso, porque os carros meio que ficaram presos, certo?
O rastreador de progresso acabou ficando perto do carro o tempo todo ou à frente do carro.
E o que acontece se essas duas linhas funcionarem mais do que deveriam?
Passar um certo ponto.
Certo.
A pista de velocidade pode, na verdade, entrar em negativo.
Agora o que isso vai fazer é colocar o rastreador atrás do carro.
Ou no outro caso aqui, se estamos indo na outra direção, também poderia colocá-lo um pouco atrás do carro
se ele estiver indo muito rápido.
Portanto, para fazer isso, precisamos colocar um pouco de grampo neste valor aqui.
Certo, então podemos colocar um rastro de velocidade menos igual a um e depois podemos colocar se.
Rastrear uma pá neste caso se torna menos do que porque está entrando em negativo.
E o que você diria que seria uma velocidade lenta aceitável para o carro?
Bem, vamos dizer algo como dois.
Se ele recebe menos de dois, porque se entrou em um menos, obviamente está muito perto de seu carro real, o que significa
que o carro não está indo muito rápido.
Portanto, ficaremos felizes em tê-lo apenas às duas.
Por isso, vamos definir assim.
Certo.
E então podemos tomar esta linha e podemos fazer algo muito semelhante aqui embaixo se ela ficar maior que
15, que é o que estamos começando aqui em cima.
Portanto, se ele se tornar maior do que 15, então vamos apenas dizer, vamos apenas fixá-lo em 15.
Portanto, estes serão nosso tipo de valores limiares que vão impedir que esses valores fiquem atrás dos
carros.
Ok, então economize isso.
Vamos voltar à unidade e vamos pressionar o jogo e ver como isso nos ajuda um pouco com isso.
Portanto, os carros estão fora e, na verdade, alguns deles, penso eu, vão passar mais desta vez porque seus rastreadores
ainda estão no início.
Sim, agora temos três.
Temos uma situação em que temos algumas pessoas que estão meio presas.
Portanto, neste caso, quero dizer, eventualmente estes dois que você pode ver na tela estão lutando contra isso.
Eventualmente, eles vão realmente chegar a um ponto em que podem continuar este cara aqui.
Ele não está nem mesmo preso contra ninguém.
Ele acabou de bater no pneu para não poder se mover.
Por isso, o que precisamos fazer é criar algum outro tipo de código de prevenção que ajude na situação
em que esses carros estão presos.
Agora, esses outros carros que estão chegando na esquina podem ajudar a desanuviar esses carros
apenas pelo fato de que eles possivelmente vão entrar neles se não os evitarem.
Mas de qualquer forma, vamos dar uma olhada em como podemos realmente descolar esses carros.
Então vamos parar de pressionar o jogo.
Está bem.
Agora, para que a próxima parte funcione, precisamos colocar algumas barreiras em nosso caminho e vocês verão que eu acrescentei algumas barreiras
de forma aleatória.
Agora este modelo de barreira é chamado de parede de barreira e se você simplesmente arrastar e soltar isso em seu projeto,
eu o coloquei dentro da minha pasta de pistas de corrida logo ali.
Portanto, traga um desses para o local.
E o que você precisa fazer com ele é acrescentar um colisor de caixa e eu lhe direi por que em um momento em que começarmos
a codificar.
Mas o que acontece com este Box Collider é que ele precisa andar por aqui, certo?
Portanto, você precisa duplicá-la e colocá-la do lado de fora.
Agora, certifique-se também de que esteja no interior de onde estava ou está o limite da pista, de modo que quando os carros batem de lado,
eles realmente batam nesta barreira.
E você precisará fazer isso ali e na outra ponta por ali.
Agora mesmo, uma vez feito isso, o que vamos fazer é programar os carros para realmente inverterem se estiverem com
problemas, como se tivessem atingido algo na frente e não pudessem ir mais longe.
Eles basicamente pararam.
Portanto, o que vamos fazer é colocar esse código em nosso vazio.
Roteiros.
Portanto, abra seu script para evitar o detector.
E a primeira coisa que vamos fazer no topo é colocar um valor de bool para a reversão.
Portanto, o inverso de bóia pública é igual a falso.
Certo.
Agora, além disso, precisamos também obter a carroceria rígida porque queremos verificar a velocidade do veículo.
E basicamente vamos dizer que se a velocidade é uma certa velocidade ou muito lenta, basicamente nada, então vamos
reverter.
Ok, deixe-me fazer disto um bool agora mesmo.
Se tivermos saído de um ponto de acionamento, faremos o inverso para ser falso.
Assim, o inverso é igual a falso.
E também vamos permitir que a marcha-atrás funcione não apenas em carros, mas também se tivermos atingido outras partes do
mundo.
Agora, a razão pela qual eu consegui que você colocasse essas barreiras com colididores de caixa foi porque
os colididores de caixa funcionam em um gatilho de permanência, o gatilho de permanência não vai acionar.
Se o carro esbarrar nessa barreira, você precisa ter essa caixa fechada.
E agora a mesma coisa vai acontecer quando nos depararmos com estes pneus.
Atualmente, eles têm colididores de malha sobre eles.
Se você quiser que eles se tornem objetos que, se um carro-estrela ficar preso a ele, vai reverter, então você precisará
transformá-los de colisores de malha em algo mais simples, como um cilindro, ou você pode colocar uma caixa ao redor deles
também.
Portanto, tenha isso em mente.
Certo.
Portanto, o que vamos fazer com o código, antes de mais nada, é ter uma
condição específica, é que se for um carro, se desfaça do retorno e colocaremos tudo isso dentro de parênteses.
Certo.
Agora aqui no topo.
O que queremos fazer é determinar onde ocorreu a colisão.
Portanto, se o carro correu para a traseira de outro carro, então ele vai fazer sua coisa de evitar.
Mas o carro da frente, se for atingido, então ele pode simplesmente seguir adiante.
Portanto, estamos basicamente preocupados com se atingimos algo por trás, é quando queremos
evitar, porque atualmente se os dois carros batem um no outro, então você vai colocar o carro à frente.
Fazendo também algumas evasivas que podem realmente fazer com que ele se vire e faça coisas estranhas que nós não
queremos.
Como podemos descobrir se um carro está na frente de outro?
Deixe-me mostrar-lhe.
Então, em primeiro lugar, descobrimos o vetor do carro que acabamos de atingir para que possamos fazer isso com uma colisão.
Ah, e vai ser um ponto transformador de ponto inverso do jogo ponto transformador de ponto colisão de ponto objeto ponto transformador
posição do ponto.
Por isso, vamos levar o vetor do carro até o que ele atingiu com o carro como ponto de origem.
Portanto, basicamente se o vetor está voltado para cima e, portanto, tem uma espécie de direção X e Z positiva, então
ele deve ter atingido algo que estava à sua frente e não algo que estava atrás
dele.
Portanto, podemos usar isso como uma condição aqui.
Por isso, vamos embora.
Se o diagnóstico de colisão é maior que zero e o Collision Direct Z é maior que zero, então o que temos aqui está
na nossa frente, certo?
E, portanto, podemos então fazer nossas coisas para evitar a colisão.
Então, deixe-me colocar isso dentro de lá.
Agora, a outra coisa que queremos fazer aqui é fazer o contrário.
Portanto, se a rigidez do ponto de velocidade do corpo for, digamos, inferior a um, que como se mal estivéssemos nos movendo,
então iremos para trás é igual a verdade.
Agora estamos fazendo isso fora dos testes para o carro porque realmente não nos importamos com o que batemos.
Queremos apenas reverter de qualquer maneira.
Portanto, isto se tornará um outro ponto aqui mesmo.
Muito bem, ótimo.
Portanto, agora temos o inverso de estar ligados e estar desligados.
Precisa ser abordado dentro de nosso código de controlador ocular.
Agora, pouco antes de terminarmos com este código, a outra coisa que precisamos fazer é atribuir este corpo
rígido e precisamos de um começo nesse caso.
Portanto, queremos um início vazio e então podemos colocar um corpo rígido igual a isto.
Não adquira um corpo rígido de componentes.
Ok, então economize isso.
Agora, você provavelmente vê que eu tenho este roteiro inverso acontecendo aqui em cima.
Não se preocupe com isso.
Isso era apenas eu testando algo.
Você não precisa disso.
Vamos entrar em nosso controlador e vamos entrar em nossa atualização.
Certo, então nós já conseguimos um vazio para que possamos usar um vazio.
Agora, o que vamos fazer aqui com nossos valores para nossa aceleração e nossa direção é na verdade
invertê-los.
Certo.
Portanto, se você pensar sobre isso, se você acertar alguma coisa e quiser reverter, você
vai reverter na direção oposta na qual você realmente quer acabar indo para frente.
E, é claro, a aceleração é o contrário.
Portanto, podemos realmente rapidamente colocar um pouco de "se" aqui e ir se um vazio se inverter então.
Podemos dizer que a aceleração será a que for multiplicada por negativa, e então nossa direção
será igual à mesma coisa, negativa uma vez por vez.
Só lá e não vai estar.
S Então isso é só reverter e só vai reverter se estivermos fazendo uma reversão particular.
Ok, então economize isso.
Agora vamos voltar à Unidade e dar uma olhada.
Agora, todas essas mudanças vão fazer com que seus carros não fiquem tão presos como antes.
Portanto, pode ser necessário dar algumas voltas antes de realmente vermos alguns deles em ação.
Certo.
Portanto, isto aconteceu mais rápido do que eu pensava.
Vamos ver se este carro faz uma marcha ré.
Sim, ele faz.
Então ele simplesmente se afastou dali.
Ele pode ter que fazer outro.
Bem, essa também começou.
E eles estão fazendo reversões para sair de sua situação difícil, como você pode ver.
Ótimo.
Portanto, isto vai melhorá-los muito ao contornar os trilhos e depois sair dos problemas.
Agora os carros também podem implementar diferentes mecanismos de direção que realmente se relacionam com o rebanho.
Vamos analisar o afluxo em uma seção posterior deste curso.
Portanto, sinta-se livre para então voltar aqui e ir, como posso implementar o flocking em meus carros, o que você pode, e então você
provavelmente faz sem muito da física de colisão extra que temos colocado aqui.
Mas a idéia aqui era mostrar como funciona a física do veículo em unidade.
Portanto, espero que tenham gostado disso.
Por favor, brinque com ele.
Há tantas coisas diferentes e lógica diferente que você pode colocar aqui para que estes carros funcionem.
Mas este é definitivamente um bom começo para seu aprendizado na mecânica do carro I.