2010-04-21 24 views
5

Powiedzmy, że mam 4 obrazy i chcę użyć tych 4 zdjęć do animacji postaci. 4 obrazy przedstawiają chodzenie postaci. Chcę, aby animacja powtarzała się tak długo, jak długo naciskam klawisz, aby się poruszać, ale zatrzymam się, gdy ją usuwam. Nie trzeba być specyficznym SFML, jeśli go nie znasz, tylko podstawowa teoria naprawdę mi pomoże.Jak możesz animować duszka w SFML

Dziękuję.

Odpowiedz

10

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.

+1

W jaki sposób można wymusić liczbę klatek na sekundę, aby animacja nie nastąpiła zbyt szybko? – andrewtweber