Estou fazendo um jogo 2D. Atualmente, existe um helicóptero voando, controlado pelo jogador. É controlado usando as teclas de seta: CIMA, ESQUERDA e DIREITA.
É a velocidade ao longo do eixo y dy
, e a velocidade ao longo do eixo x é dx
.
É física é a seguinte:
Sempre que UP não é pressionado , dy
acelera em constante aceleração, indefinidamente em direção a baixo. (Gravidade). dx
permanece no seu valor atual.
Quando UP é pressionado , dy
acelera em constante aceleração, independentemente do que é atualmente, até 4 (para cima, até atingir a velocidade 4). dx
permanece no seu valor atual.
Quando ESQUERDA é pressionado , dx
acelera em constante aceleração, de qualquer que seja o momento, até -4 .
Quando RIGHT é pressionado , o dx acelera em constante aceleração, de qualquer que seja o momento, até 4 .
(Quando ESQUERDA ou DIREITA são pressionadas e UP não é pressionada simultaneamente, como eu disse: dy
cada vez mais se torna cada vez menor, porque a gravidade está afetando o helicóptero)
Tudo isso faz o helicóptero seguir arcos no ar, em vez de linhas retas.
Isso cria física que parece bastante realista.
Minha pergunta é:
O helicóptero oponente, uma IA, deve se mover usando o mesmo sistema de física.
Digamos que a IA queira ir de onde está atualmente, para apontar B.
Se não houvesse gravidade nem aceleração gradual no jogo, seria fácil. Eu simplesmente desenharia um vetor da posição da IA para o ponto B e faria a AI segui-lo.
Mas como existe gravidade e aceleração gradual, a IA nunca pode se mover em linha reta (quase). qual seria a melhor maneira de fazer a IA ir para o ponto B, com a maior eficiência possível de tempo?
Como posso levar em consideração a gravidade ao mover a IA para um destino específico?
(Se for mais fácil explicar, considere o ponto B no mesmo nível no eixo y da IA e não na diagonal).
obrigado