[SFML, C++] Jak zrobić animacje?
Ostatnio zmodyfikowano 2012-03-10 09:55
Gal Temat założony przez niniejszego użytkownika |
[SFML, C++] Jak zrobić animacje? » 2012-03-08 21:11:24 witam chciałbym wiedziać jak najlepiej zrobić animacje polegająca na pojawianiu się np: postaci w kilku innych pozycjach w ciągu określonego czasu np: idzie ludek i za kazdym razem ma inne polozenie nog ja zrobiłem to tak stworzylem 3 rysunki ludka w roznych momentach ruchu i stworzylem nastepujący kod if( ruch ) { animacja++; if( animacja == 300 ) { animacja = 0; ktory++; if( ktory == 5 ) ktory = 1; if( ktory == 1 ) ludek1.SetImage( obraz1 ); if( ktory == 2 ) ludek1.SetImage( obraz2 ); if( ktory == 3 ) ludek1.SetImage( obraz3 ); if( ktory == 4 ) ludek1.SetImage( obraz2 ); } } czy to dobry sposob czy mozna to zrobic lepiej inaczej? |
|
Dragonit |
» 2012-03-08 22:16:29 A nie lepiej ci zrobić z tych 3 obrazków jeden a klatkowy ?
|
|
Gal Temat założony przez niniejszego użytkownika |
» 2012-03-08 23:08:08 a jak to sie robi? byl bym wdzieczny jakbys mi to wytlumaczyl |
|
Dragonit |
» 2012-03-08 23:26:00 |
|
pekfos |
» 2012-03-09 15:00:15 |
|
Gal Temat założony przez niniejszego użytkownika |
» 2012-03-09 19:33:39 nie znam angielskiego wiec nigdzie bym nie trafil ale dzieki :P Interesuje mnie tez czy musze liczyć przejscia petli zeby animacja zmieniała się co jakiś czas czy da się to zrobić inaczej(mądrzej) |
|
Dark |
» 2012-03-09 22:29:56 Przecież w animacjach chodzi o to aby odpowiednie klatki wyświetlały się co określony okres czasu. Najpierw zrób animację później ją rozwijaj, i tak trzeba używać liczenia pętli bo jak inaczej wiedzieć kiedy ją wyświetlić. Gdy będziesz miał więcej opcji takich jak ruch, skok, strzelanie itp. wtedy też trzeba określić co i jak ma się wyświetlać, no i co idzie w ruch? Zmienna przechowująca liczbę pętli. Jak nie znasz angielskiego to czas aby się go nauczyć bez niego matmy i fizyki nie zrobisz rozbudowanej gry( wiadomo o co chodzi). |
|
hincu |
» 2012-03-10 09:55:56 @Dark, od takich rzeczy sa timery nie zliczanie petli, tak wiec masz pewien tam timer sf::Clock Timer; sf::Sprite SpriteA; void animation( sf::Sprite & Sprite, sf::Clock & Timer, float co_ile ) { if( Timer.GetElapsedTime() >= co_ile ) { nastepna klatka Timer.Reset(); )
prosciej sie tego chyba nie da przedstawic |
|
« 1 » |