Programando uma mudança suave de impulso do vetor de velocidade atual para um vetor alvo

TL; dr: "Eu não sei como calcular uma transição suave de empuxo entre um vetor e outro."

Estou programando um jogo simples onde um inimigo persegue o jogador em um espaço aberto (sem paredes). Eu estava calculando as velocidades x & y do inimigo independentemente, acelerando-as se elas estivessem levando-as na direção do jogador e rapidamente diminuindo a velocidade se estivessem indo na direção errada (por exemplo, EnemyVelocity.x> 0 & player.x <inimigo.x , em seguida, EnemyVelocity.x - 2.)

Enquanto a jogabilidade é decentemente divertida tentando desviar do inimigo, é meu desejo que o inimigo se comporte usando a física adequada. O que estou fazendo atualmente é fazer com que o inimigo defina seu impulso (pense em uma espaçonave) com base no ângulo entre eles e o jogador, e faça com que o empuxo acelere até a velocidade máxima (calculando o lado c do triângulo EnemyVelocity). Uma vez que isso acontece, não tenho certeza se a melhor maneira de ter o impulso se ajusta. Se eu não deixar nenhuma velocidade máxima, o inimigo acelera muito bem, mas vai facilmente ultrapassar o jogador, e então demorará muito para ter força suficiente voltando na direção do jogador.

O que eu gostaria que acontecesse é que o inimigo ajustasse constantemente sua velocidade no caminho para o jogador, mirando onde quer que estivessem (eu não quero que eles prevejam onde você estará). Então, quando sentirem falta do jogador, eu gostaria que as mesmas fórmulas de aceleração e aceleração reajustassem sua velocidade e as enviassem de volta ao jogador.

Estou pensando que isso envolverá dois vetores: um em que o inimigo está viajando atualmente e outro em que o inimigo quer viajar (o vetor que os levará diretamente ao jogador). Não sei como calcular uma transição suave de impulso entre um vetor e outro.

Quaisquer dicas, fórmulas ou perguntas serão muito apreciadas! Obrigado Stack Overflow.

questionAnswers(7)

yourAnswerToTheQuestion