Możesz potrzebować prostego komputera stanu. Gdy klawisz jest wyłączony (patrz sf::Input's IsKeyDown method), umieść znak w stanie "animowanym". Gdy klawisz nie jest wyłączony, niech postać będzie w stanie "nie animowany". Oczywiście zawsze możesz pominąć ten "stan" i zrobić to, o czym wspomnę poniżej (w zależności od tego, co dokładnie robisz).
Następnie, jeśli postać jest w stanie "animowanym", uzyskaj następny "obraz" (patrz następny akapit, aby uzyskać więcej szczegółów na ten temat). Na przykład, jeśli twoje obrazy są przechowywane w prostej tablicy 4 elementów, następny obraz będzie miał numer (currentIndex + 1) % ARRAY_SIZE
. W zależności od tego, co robisz, możesz chcieć przechowywać klatki obrazu w bardziej wyrafinowanej strukturze danych. Jeśli postać nie znajduje się w stanie "animowanym", nie dokonasz tutaj żadnej aktualizacji.
Jeśli twoje "4 obrazy" znajdują się w tym samym pliku obrazu, możesz użyć metody sf :: Sprite SetSubRect, aby zmienić część wyświetlanego obrazu. Jeśli masz 4 różne obrazy, to prawdopodobnie będziesz musiał użyć metody sf :: Sprite: SetImage, aby wyłączyć obrazy.
W jaki sposób można wymusić liczbę klatek na sekundę, aby animacja nie nastąpiła zbyt szybko? – andrewtweber