ho un problema con delle animazioni
immaginate uno spazio tridimensionale e un ipotetico personaggio che spara un proiettile identificato da un vettore
il programma ha una funzione draw(), che funziona da loop per le animazioni in cui inserire tutto quello che dev'essere visualizzato e che fa da sola "l'update"
se in questa funzione inserisco per esempio:
if(MouseIsCliccato){spara();}
e in spara() metto
for(float i=0; i<100; i++){
vettore=(x+i,y+i,z+i);
disegnaProiettile(vettore);
}
funziona
però mettiamo caso che questo proiettile debba muoversi lentamente, diminuireste l'incremento di i?
no, perché il personaggio non potrebbe muoversi finché il ciclo for non è terminato.
allora per ogni proiettile bisognerebbe creare un thread? si? no?
perché se faccio:
class proiettile extends Thread{
[...]
void run(){
for(float i=0; i<100; i++){
vettore=(x+i,y+i,z+i);
disegnaPunto(vettore);
sleep(200);
}
}
}
il proiettile va piano e il personaggio può spostarsi, ma se ne sparo una cifra a raffica, mi crasha tutto con un ArrayIndexOutOfBound brutto brutto..
quindi il problema è che se in un programma ci sono più vettori che devono muoversi ecc, voi che siete degli informatici cervelloni e anche un po culattoni, come gestireste la faccenda