Si potrebbe desiderare qualche tipo di macchina di stato semplice. Quando il tasto è abbassato (vedi sf::Input's IsKeyDown method), avere il carattere nello stato "animato". Quando la chiave non è abbassata, posiziona il personaggio nello stato "non animato". Naturalmente, puoi sempre saltare questo "stato" e fare semplicemente ciò che ho menzionato qui di seguito (dipende esattamente da cosa stai facendo).
Quindi, se il personaggio si trova nello stato "animato", ottenere la successiva "immagine" (vedere il prossimo paragrafo per ulteriori dettagli su questo). Ad esempio, se le immagini sono archiviate in un semplice array di 4 elementi, l'immagine successiva sarà a (currentIndex + 1) % ARRAY_SIZE
. A seconda di ciò che si sta facendo, si consiglia di memorizzare i fotogrammi dell'immagine in una struttura dati più sofisticata. Se il personaggio non è nello stato "animato", allora non farei alcun aggiornamento qui.
Se le "4 immagini" si trovano all'interno dello stesso file immagine, è possibile utilizzare il metodo sf: Sprite SetSubRect per modificare la parte dell'immagine visualizzata. Se in realtà hai 4 immagini diverse, probabilmente dovresti usare il metodo sf: Sprite SetImage per cambiare le immagini.
Come si imporrebbe un framerate in modo che l'animazione non accada troppo rapidamente? – andrewtweber