Estoy haciendo un juego en 2D. Actualmente hay un helicóptero volando, controlado por el jugador. Se controla con las teclas de flecha: ARRIBA, IZQUIERDA y DERECHA.
Su velocidad a lo largo del eje y es dy
, y la velocidad a lo largo del eje x es dx
.
Su física es la siguiente:
Siempre que no se presiona ARRIBA , dy
acelera en aceleración constante, indefinidamente hacia abajo. (Gravedad). dx
permanece en su valor actual.
Cuando se presiona ARRIBA , dy
acelera en aceleración constante desde lo que sea actualmente, hasta 4 (hacia arriba, hasta que alcanza la velocidad 4). dx
permanece en su valor actual.
Cuando se presiona IZQUIERDA , dx
acelera en aceleración constante, desde lo que sea actualmente, hasta -4 .
Cuando se presiona DERECHA , dx acelera en aceleración constante, desde lo que sea actualmente, hasta 4 .
(Cuando se presiona IZQUIERDA o DERECHA y no se presiona ARRIBA simultáneamente, como dije: dy
cada vez se hace más y más pequeño, porque la gravedad afecta al helicóptero)
Todo esto hace que el helicóptero a menudo siga arcos en el aire, en lugar de líneas rectas.
Esto crea una física que parece bastante realista.
Mi pregunta es:
El helicóptero oponente, una IA, debe moverse usando el mismo sistema de física.
Digamos que la IA quiere llegar desde donde está actualmente, al punto B.
Si no hubiera gravedad ni aceleración gradual en el juego, sería fácil. Simplemente dibujaría un vector desde la posición de la IA hasta el punto B, y haría que la IA lo siguiera.
Pero como hay gravedad y aceleración gradual, la IA nunca puede moverse en línea recta (casi). ¿Cuál sería la mejor manera de hacer que la IA vaya al punto B, de la forma más eficiente posible?
¿Cómo puedo tener en cuenta la gravedad al mover la IA hacia un destino específico?
(Si es más fácil de explicar, considere que el punto B está en el mismo nivel en el eje y que la IA, y no en diagonal).
Gracias