19-08-2012, 03:22 PM
Il concetto di fondo è disegnare le varie posizioni del tuo personaggio e cambiarle (facendole scorrere) ogni deltaT. Di conseguenza avrai bisogno di un timer e ti potrebbe tornare utile una FSM. Il timer lo puoi fare con la funzione clock, altrimenti devi vederti la documentazione delle Allegro.
Grossomodo ti ritroverai ad avere una cosa del genere:
(è solo una bozza)
Grossomodo ti ritroverai ad avere una cosa del genere:
(è solo una bozza)
Codice:
// game loop
std::clock_t frameTime = 0;
while(running)
{
auto currentTime = clock();
animationUpdate(frameTime);
//...
frameTime = clock() - currentTime;
}
//---------------------------------
void animationUpdate(std::clock_t elapsedTime)
{
time += elapsedTime;
while(time >= deltaT) // non if perché ipotizzo che elapsedTime possa essere >= a 2*deltaT (deltaT è una costante)
{
time -= deltaT;
//passa all'immagine successiva dell'animazione
}
}
(19-08-2012, 02:08 PM)ferrass Ha scritto: io avevo creato tanti frame del mio sprite in diverse posizione e avevo messo che quando premevo right si caricavano in successione.Risultato? vedere l'ultimo frame sovrapposto agli altri ce rimani fermo xDNon ho ben capito... Comunque il concetto è di cambiare l'immagine dello sprite, non di aggiungere un altro sprite, quindi se ottieni due immagini sovrapposte è perché hai sbagliato questo.