Salve, sto programmando lo sparo di un cannone e non riesco a capire bene come gestire il moto parabolico per far colpire un punto preciso (nemico)
Allora spiego meglio il tutto.
C'è un cannone in una posizione che conosco Cannone:(cX, cY, cZ) e c'è un nemico in una posizione che conosco Nemico:(nX, nY, nZ)
Voglio che il cannone sapendo la distanza tra lui e il nemico si inclini (facendo cambiare la posizione della bocca di fuoco e quindi anche l'altezza iniziale del proiettile) abbastanza per far partire un proiettile che dovrà raggiungere i piedi del nemico.
La potenza di sparo del cannone (le velocità) varierà per permettere al proiettile di raggiungere i piedi del nemico in tot tempo.
Forza di gravità = g
Sono riuscito ad andare vicino al risultato considerando l'altezza iniziale e finale uguali, però avrei bisogno che il proiettile punti ai suoi piedi non alla stessa altezza dalla quale è stato sparato.
Spero qualcuno riesca ad aiutarmi, sono bloccato da diverse ore.
Ciò che ho fatto:
Scelgo tempo prima del impatto TempoPerColpire = Qualcosa
Ho calcolato la direzione verso la quale il cannone dovrà girarsi.
Direzione = PosizioneNemico - PosizioneCannone
DirezioneY = 0 Cosi il vettore direzione è solo riguardante le assi XZ
Con una funzione interna al programma che uso ho trovato la distanza tra il cannone e il nemico (più semplice che fare tutti i calcoli)
Quindi ho la DistanzaNemico
Dopo di che cerco di calcolare tutte le componenti della velocità iniziale del proiettile che utilizzerò anche come direzione del cannone per l'inclinazione
(L'asse Y sarà l'altezza)
VelocitàXZ = DistanzaNemico / TempoPerColpire
Per dividerne le componenti
VelocitàX = VelocitàXZ * DirezioneXNormalizzata
VelocitàZ = VelocitàXZ * DirezioneZNormalizzata
E questo sembra funzionare molto bene, nelle assi xz il proiettile raggiunge il nemico nel tempo giusto. Ma qui inizia il difficile. Non trovando soluzione per adesso ho lasciato cosi:
VelocitàY = 1/2 * (g * TempoPerColpire) Che farà arrivare nel tempo scelto il proiettile all'altezza dalla quale è partito
Infine per l'inclinazione e tutto imposto il cannone nella direzione descritta da queste velocità e sparo il proiettile