Jak zrobić animacje prostej postacji w SFML ?

1

Cześć! Przepraszam za taki banał lecz jestem nowy. Chciał bym zrobić animacje postaci w tym wypadku prostego kwadratu + elipsy(aby wyglądało to jak mruganie). Stworzyłem 6 klatek image + sprite, lecz nie wiem jak dobrze je połączyć w jedną całość. Z góry dzięki za pomoc : )

0

Ustal ile klatek animacji na sekunde ma byc, policz co ile czasu powinny sie klatki zmieniac, i co tyle czasu je zmieniaj. SFML nie ma z tego co wiem czegos do animacji bezpośrednio, wiec trzeba kombinowac.

0

W jak najłatwiejszy sposób mogę zmienić klatkę postaci ?

0

Rysujesz ten sam sprite, ale co zmianę klatki zmieniasz teksture tego sprite przez odpowiednią metodę.
http://www.sfml-dev.org/documentation/

0

U mnie dość ciężko z dokumentacją, wiem że powinno się ją ogarnąć jak najszybciej ale wiecie jak to jest .. Może ktoś napisać jak np poprzez switcha mogę wywołać kolejne klatki(sprite) animacji ?

0

Chyba o to chodzi?

Masz x obrazków i zmieniasz je w takiej kolejności by wyszła animacja.

Tzn. ładujesz sobie te obrazki i np. w pętli wyświetlasz raz ten raz ten tak by wyszła animacja.

Nigdy nie próbowałeś robić gifa czy co?;p

0

@krystiant94 Nie masz opanować dokumentacji, tylko opanować umiejętność korzystania z niej. Nie wiem jak inaczej chcesz sie uczyc nowych rzeczy, nie bedziesz zawsze miał tutoriale po polsku na wielu stronach o każdej bzdurze, a o dokumentacje łatwiej :)

Jeżeli animacja ma sie obdywac ciagle to po prostu co pętle sprawdzasz ile czasu uplynelo od ostatniej zmiany klatki, jeżeli czas jest równy lub większy to ma zmienić klatkę i tyle.
Jeżeli nie ciągle, to przydałaby się zmienna typu bool, ktora mowilaby o ty, czy trwa wlasnie animacja, i jeżeli tak to robisz to co powyzej.

SFML 2 czy 1.6?

0

Jeszcze uczę się na 1.6 bo jest właśnie więcej tutków itp. Rozumiem wszystkie warunki i zależności, zrobiłem już połowę gry , skakanie, przemieszczanie się .. Nie wiem po prostu jak sprawdzić ile czasu od ostatniej zmiany klatki. Mozna normalnie zrobić to w sf::clock i ifie ? Widziałem właśnie w dokumentacji że można zrobić jeszcze klasę w której będę dodawać kolejne klatki prawda ?

0

Sposobow jest wiele, jak poszukasz na forum sfml'a czy w tutkach/wiki to pewnie znajdziesz wiele.
SPrwadzanie czasu w SFML 2.0 to sf::Clock clock; sf::Time Elapsed; sf::Time Minimum; Ustalasz minimum, metodą getElapsed albo jakos tak ustawiasz w pętli Elapsed, i porównujesz je. Jak jest OK, to wyswietla nowa klatke i clock.reset(), albojakos tak. Z pamieci pisze. W dokumentacji poszukaj, powinno byc podobnie.

0

Zrobilem już prostą animacje o którą mi chodziło lecz wg mnie jest tego za dużo , kod wygląda tak :
if(sprawdzenie){
if(Clock.GetElapsedTime() < 0.1) okno.Draw(buzia[0]);
if(Clock.GetElapsedTime() >= 0.2 && Clock.GetElapsedTime() < 0.3) okno.Draw(buzia[1]);
if(Clock.GetElapsedTime() >= 0.3 && Clock.GetElapsedTime() < 0.4) okno.Draw(buzia[2]);
if(Clock.GetElapsedTime() >= 0.4 && Clock.GetElapsedTime() < 0.5) okno.Draw(buzia[3]);
.....

i tak wypisywanie kolejnych. Jak myslisz, da sie do w dobry sposob zapisac w petli ?

0

okno.Draw(buzia[10*Clock.GetElapsedTime()-1]);

0

Jeżeli mam na jednym obrazie po kolei narysowane 3 pozycje postaci(poruszanie się) w 4 rzędach odpowiadających podanym kierunkom, to jak po wycięciu i wprowadzeniu animacji(która już zrobiłem) prawidłowo ustawić getposition i getsize.x dla podanego obrazu ? Bo po zrobieniu kolizji dla animacji przesuwa się cały obraz a nie jego dana część ..

1 użytkowników online, w tym zalogowanych: 0, gości: 1