Estou construindo um jogo com jogadores e mísseis.
Eu quero disparar um míssil de P1 para P2. O míssil deve sempre levar exatamente cinco segundos para atingir P2. O míssil também deve rastrear P2. Se P2 se afastar, o míssil deve acelerar para satisfazer a restrição de tempo. Se P2 se mover para a esquerda, o míssil deve se mover para a esquerda (e também mudar a velocidade). Se P2 se aproximar de P1, o míssil deve desacelerar.
Isso é possível? Qual é a melhor maneira de conseguir isso?
No momento, não tenho uma classe Vector2D (na verdade, não é um jogo, mas a analogia funciona bem); portanto, se possível, eu gostaria de uma solução que não exija uma.
Edit: Este não é realmente um míssil também. :)
Obrigado!
Respostas:
A edição é tranquilizadora. :)
Ok, aqui está um loop de atualização simples ...
Assumindo que quando disparamos o míssil, inicializamos
remainingFlightTime = 5f
então ...fonte
Por que não ler a posição e atualizar o destino de destino conforme ele muda?
Talvez você precise ver como o lerping funciona, mas seria algo como isto:
Ao ler, você está basicamente alterando a posição de um objeto durante um certo período de tempo, para poder dizer que está 50% do caminho de A a B e o objeto seria colocado lá. A leitura é direta, assim você sempre se moverá em direção ao alvo (conforme desejar nos comentários).
fonte