Na palestra anterior, acrescentamos a capacidade de dirigir o tanque vermelho e a torre aqui se moveria
para cima e para baixo com base em onde calcula que precisaria estar para atirar o projétil,
dadas as conchas, a velocidade ou a velocidade.
Mas, como você pode ver, nossas conchas não têm velocidade ou velocidade no momento, então precisamos colocá-las
para completar este exercício.
Vamos entrar em fogo de concha.
As conchas estão sendo criadas aqui em Create Bullet.
Agora, antes que as conchas tivessem código de movimento no script da concha, nós o substituímos pelo script da concha,
que não tem nenhum movimento sobre ela.
Queremos confiar em parte do sistema físico e unidade para realmente empurrar nossas conchas pelo ar para
nós.
Portanto, vou criar aqui um objeto de jogo chamado Shell que realmente agarra a concha que está sendo criada.
Então, uma vez que o tivermos, vamos realmente ajustar sua velocidade de seu corpo rígido à velocidade a
que o queremos ajustar.
Por isso, vamos dizer aqui, "shell dot get component, rigid body dot velocity" é igual à velocidade multiplicada por uma direção para torná-la
em velocidade.
E, neste caso, a direção será a forma como a base da torre será girada.
Portanto, o ponto de base da torre para frente.
Assim, esse será o vetor dianteiro ou o vetor z daquela base da torre para definir essa velocidade inicial.
Certo.
Portanto, vamos experimentar isto, salvá-lo e voltaremos à unidade.
E uma vez carregado, lembre-se, ainda estamos atirando o tanque verde com a barra de espaço.
Agora note que não é perfeitamente preciso.
Quanto mais longe eu me afastar, melhor será a taxa de acerto.
Pode acontecer de ir ainda mais longe aqui, acho eu.
Agora, a razão pela qual isso está acontecendo é devido à maneira como estamos calculando
a distância entre os tanques, porque estamos calculando a distância dos tanques mais ou menos daqui para
cá, e não da bala para lá.
Portanto, o que ela pode fazer é colocar um pouco de fator de ajuste ali, se não conseguirmos
começar a bala a partir da posição exata do tanque e se voltarmos ao código, podemos descer em ângulo
de cálculo onde x lembrar que é a nossa distância entre os dois objetos, que é a magnitude aqui.
Na verdade, você pode fazer isso um pouco menor.
Portanto, ponha como se fosse um fator de fudge ali dentro de um e salve-o.
Vamos voltar à unidade e ao jogo da imprensa e dar uma olhada no efeito disso agora.
Portanto, estamos realmente atingindo o tanque.
E devo dizer apenas que quase só ultrapassa a parte superior do tanque.
Agora, lembre-se, o primeiro lote de balas que você viu naquele momento não atingiu o tanque
porque o tanque ainda estava virando, certo?
Porque tem uma espécie de taxa de rotação lenta.
Portanto, pode começar a atirar na direção errada antes de estar realmente alinhado.
Agora, e se usarmos o outro ângulo?
Lembre-se, temos dois ângulos, temos um ângulo baixo e temos um ângulo alto e escolhemos neste
caso o verdadeiro, vamos colocar aqui o falso, que usará o ângulo alto que é calculado.
Portanto, vamos salvar isso.
Volte para aqui e teremos outra oportunidade.
Então, vamos agora tocar a torre, vejamos esse ângulo.
Isso é um ângulo alto e as balas vão subir e descer e depois atingir nosso
tanque.
Deixem-me sair um pouco agora.
Eu também posso sair da estrada, o que é uma coisa boa, eu acho, se você estiver jogando contra um personagem
dos olhos.
Certo, agora as balas atualmente não vão na direção em que estão viajando e devem ir.
Portanto, vamos também consertar isso.
Agora isso vai estar no código da casca do olho.
O corpo rígido tem aquele corpo rígido sobre ele e é a velocidade do corpo rígido que estamos colocando de volta no casco
de incêndio aqui para que possamos agarrar essa velocidade e fazer o corpo das balas ou acho que o corpo modelado gira na mesma direção em
que está viajando.
Por isso, aqui dentro vamos acrescentar uma isca rígida ao corpo e vamos
ligá-la ao corpo rígido real da bala para que não tenhamos que continuar, obter componente,
obter componente, obter componente cada loop básico que fazemos porque é um processo muito
pesado para fazer isso.
Muito bem, então, vamos fazer este ponto para obter um corpo rígido de componentes como esse.
E então na atualização diremos que este ponto de transformação de ponto para frente é igual a r b.
Não o faça.
Velocidade, então ela apontará nessa direção.
Ok, então guarde isso e nós voltaremos à unidade e ao jogo da imprensa.
E agora.
Você pode ver que as balas sobem e se viram e, quando descem, estão
de fato voltadas na direção certa.
Muito bem.
Para terminar esta seção sobre projéteis, vamos nos divertir um pouco com nosso tanque.
Assim, o que eu tenho aqui, você pode ver um tanque de tiro contínuo.
Agora, algumas dessas balas não são particularmente precisas porque não se esqueça, como estão se instanciando, elas podem
colidir umas com as outras, mas a maioria delas parece atingir o alvo.
O que eu gostaria de fazer, no entanto, é programar isto para que se o tanque sair do alcance
e não houver nenhum ângulo que possa ser calculado, o pequeno tanque verde vá atrás do tanque vermelho e realmente
se mova.
Portanto, embora não esteja atingindo sua marca ali, sabe que está perto o suficiente para que, se girar
corretamente, possa.
Mas então, se eu me mover até aqui e ficar fora de alcance, até onde a distância for, parará
de atirar e depois virá atrás de nós novamente.
Não consigo me afastar o suficiente na tela para que você não consiga mais ver o tanque vermelho daqui.
Ah, lá vamos nós.
Certo, então quando eu voltar perto, ele vai começar a atirar novamente, certo?
Portanto, vamos entrar em nosso roteiro de shell de fogo e adicionar o código que nos permitirá fazer isso.
Antes de tudo, vamos acrescentar uma velocidade de movimento para nosso tanque.
Portanto, flutuar a velocidade de movimento e vamos definir isso para dizer três metros por segundo.
Agora temos que testar se temos um ângulo para determinar se podemos nos mover ou se podemos atirar.
E isso significa que esta torre giratória vai ter que retornar nosso ângulo aqui.
Portanto, vamos colocar isto como um ponto de interrogação de flutuação de retorno e depois aqui embaixo retornaremos o ângulo.
Portanto, isto voltará em nossa atualização.
Na atualização, vamos criar um carro alegórico.
O ângulo é igual a isso.
E então, em vez de baixar a chave, vamos embora.
Se o ângulo não for igual a zero, então podemos criar uma bala.
Caso contrário, podemos mover o tanque.
Agora podemos mover o tanque com bastante facilidade com uma tradução.
Portanto, este ponto transforma, ponto traduz.
Porque lembre-se, estamos virando o tanque para enfrentar o inimigo de qualquer maneira.
Portanto, tudo o que temos que fazer é apenas dar um pequeno empurrãozinho para frente.
Portanto, zero zero e na direção Z, tempo de ponto delta multiplicado pela nossa velocidade de movimento que temos
ali.
Muito bem, ótimo.
Portanto, na verdade, antes de mostrar isto em ação porque você acabou de ver em ação, quero
apenas mudar nossa velocidade aqui em cima.
Vamos recusar isso para gostar de um.
Portanto, é um pouco mais lento para alcançar, mas cinco, por isso é mais rápido para dar a volta por cima.
Ok, então economize isso.
Vamos voltar à unidade e experimentar isto.
Então, vamos pressionar o jogo e depois começar a dirigir meu tanque.
Portanto, agora que estou fora de alcance, ele vai levar muito tempo para me alcançar.
Mas note que ele ainda está se voltando para o tanque vermelho.
Agora, assim que eu voltar ao alcance, mesmo que ele possa não ser girado corretamente, ele ainda
está tentando atirar e eventualmente irá girar até o ponto em que possa atirar em mim.
Muito bem, ótimo.
Certo.
Bem, isso termina esta seção sobre projéteis, mas há tanta coisa que você pode fazer.
E espero que isto o inspire a dar uma olhada na matemática disto e em toda uma variedade de
outros tipos de projéteis que você possa produzir.
E agora você deve saber como montar um pequeno A realmente simples. I. caráter que pode atirar em seu
inimigo.