Programación de un cambio suave de empuje del vector de velocidad actual a un vector objetivo

TL; dr: "No estoy seguro de cómo calcular una transición suave de empuje entre un vector y otro".

Estoy programando un juego simple en el que un enemigo persigue al jugador en un espacio abierto (sin paredes). Estaba calculando las velocidades de x e y del enemigo de forma independiente, acelerándolas si las llevaban en la dirección del jugador y desacelerándolas rápidamente si iban por el camino equivocado (por ejemplo, EnemyVelocity.x> 0 & player.x <enemy.x , luego EnemyVelocity.x - 2.)

Mientras que el juego es bastante divertido tratando de esquivar al enemigo, es mi deseo que el enemigo se comporte utilizando la física adecuada. Lo que estoy haciendo actualmente es hacer que el enemigo establezca su empuje (piense en una nave espacial) según el ángulo entre ellos y el jugador, y que su empuje acelere hasta una velocidad máxima (calculando el lado c del triángulo de EnemyVelocity). Una vez que eso suceda, no estoy seguro de cuál es la mejor manera de ajustar el empuje. Si no dejo la velocidad máxima, el enemigo acelera muy bien pero superará fácilmente al jugador, y luego tomará mucho tiempo para obtener el impulso suficiente para regresar en dirección al jugador.

Lo que me gustaría que sucediera es que el enemigo ajuste constantemente su velocidad en el camino hacia el jugador, apuntando a donde sea que esté (no quiero que predigan dónde estarás). Luego, cuando pierden al jugador, me gustaría que las mismas fórmulas de empuje y aceleración reajusten su velocidad y las envíen al jugador.

Estoy pensando que esto involucrará dos vectores: uno donde el enemigo está viajando actualmente y otro donde el enemigo quiere viajar (el vector que los llevará directamente al jugador). No estoy seguro de cómo calcular una transición suave de empuje entre un vector y otro.

¡Cualquier consejo, fórmula o pregunta será muy apreciada! Gracias Stack Overflow.

Respuestas a la pregunta(7)

Su respuesta a la pregunta