Sto realizzando un gioco 2D. Al momento c'è un elicottero in volo, controllato dal giocatore. È controllato usando i tasti freccia: SU, SINISTRA e DESTRA.
È la velocità lungo l'asse y dy
, e la velocità lungo l'asse x è dx
.
La sua fisica è la seguente:
Ogni volta che SU non viene premuto , dy
accelera in accelerazione costante, indefinitamente verso il basso. (Gravità). dx
rimane nel suo valore attuale.
Quando si preme SU , dy
accelera in accelerazione costante da qualsiasi cosa sia attualmente, fino a 4 (verso l'alto, fino a raggiungere la velocità 4). dx
rimane nel suo valore attuale.
Quando si preme SINISTRA , dx
accelera in accelerazione costante, da qualunque cosa sia attualmente, fino a -4 .
Quando si preme DESTRA , dx accelera in accelerazione costante, da qualunque cosa sia attualmente, fino a 4 .
(Quando si preme SINISTRA o DESTRA e SU non viene premuto contemporaneamente, come ho detto: dy
diventa sempre più piccolo, perché la gravità influisce sull'elicottero)
Tutto ciò fa sì che l'elicottero segua spesso archi in aria, piuttosto che linee rette.
Questo crea fisica che sembra abbastanza realistica.
La mia domanda è:
L'elicottero avversario, un'intelligenza artificiale, dovrebbe muoversi usando lo stesso sistema fisico.
Diciamo che l'IA vuole arrivare da dove si trova attualmente, al punto B.
Se non ci fosse gravità e nessuna accelerazione graduale nel gioco, sarebbe facile. Disegnerei semplicemente un vettore dalla posizione dell'IA al punto B e farei in modo che l'IA lo seguisse.
Ma poiché c'è gravità e accelerazione graduale, l'IA non può mai muoversi in linea retta (quasi). quale sarebbe il modo migliore per portare l'IA al punto B, nel modo più efficiente possibile nel tempo?
Come posso prendere in considerazione la gravità quando si sposta l'IA verso una destinazione specifica?
(Se è più facile da spiegare, si prega di considerare il punto B sullo stesso livello sull'asse y dell'IA e non in diagonale rispetto ad esso.)
Grazie