[C++][Allegro] Wyświetlanie animowanych spritów. Widoczne więcej niż jedna klatka.
Ostatnio zmodyfikowano 2012-10-31 21:26
enzoMatrix Temat założony przez niniejszego użytkownika |
[C++][Allegro] Wyświetlanie animowanych spritów. Widoczne więcej niż jedna klatka. » 2012-10-31 20:48:54 Witam. Mam problem z wyświetlaniem animowanej postaci. Niestety nie mam talentu graficznego i jak na razie znalazłem sprity z game makera, do którego się przymierzałem kiedyś. Problem w tym, że tam sprity postaci są w osobnych plikach, każdy obrazek do danego kierunku poruszania się. To ogarnę kiedy indziej. Ale kiedy wyświetlam animację z jednego z takich obrazków nie potrafię zrobić, żeby widoczna była tylko jedna klatka, cały czas pokazuje mi po prostu przesuwający się film. gdy kombinowałem z wartością GlownyBohater.klatka to zaczyna mi postać mrugać gdzieś około wartości 120. Przy tej animacji korzystałem z tutoriala: http://www.easykoder.vot.pl/arty/animacja_postaci trochę musiałem kod pozmieniać bo tam tak jak mówiłem sprity są inaczej narysowane w pliku. Nie wiem zrobić żeby normalnie wyświetlała się animacja poruszania, dlatego proszę o pomoc. int frame = 0( to mialem wyzej ale nie bylo potrzeby kopiowac wiekszej czesci kodu ) while( speed > 0 ) { if( key[ KEY_LEFT ] ) { GlownyBohater.x -= 2; } if( key[ KEY_RIGHT ] ) { GlownyBohater.x += 2; } if( key[ KEY_UP ] ) { GlownyBohater.y -= 2; } if( key[ KEY_DOWN ] ) { GlownyBohater.y += 2; } speed--; frame++; if( frame > 50 ) frame = 0; } if( frame < 20 ) { GlownyBohater.klatka = 0; } else if( frame >= 20 && frame < 30 ) { GlownyBohater.klatka = 1; } else if( frame >= 30 && frame < 40 ) { GlownyBohater.klatka = 2; } else if( frame >= 40 && frame < 50 ) { GlownyBohater.klatka = 3; }
masked_blit( GlownyBohaterLeft, bufor, GlownyBohater.klatka * 60, 0, GlownyBohater.x, GlownyBohater.y, 30, GlownyBohaterLeft->h );
|
|
DejaVu |
» 2012-10-31 21:07:52 Uproszczony kod do pętli głównej aplikacji: nrKlatki =( nrKlatki + 1 ) % liczbaWszystkichKlatek; RysujKlatke( nrKlatki, pozycja_x, pozycja_y );
|
|
enzoMatrix Temat założony przez niniejszego użytkownika |
» 2012-10-31 21:10:59 rysuj klatke to rozumiem ze to np masked_blit ale tej pierwszej linijki za skarby nie rozumiem :P to ma być zamiast tych moich if z klatkami? |
|
Gabes |
» 2012-10-31 21:16:17 |
|
enzoMatrix Temat założony przez niniejszego użytkownika |
» 2012-10-31 21:19:28 dzięki. to już się biorę za rozszyfrowywanie bo ten sprite z game makera mnie po prostu wykańcza. Swoją drogą wybrałem go bo game maker był nawet ciekawy i prosty niestety trzeba było chyba 100$ zapłacić żeby korzystać z niego w pełnej wersji. Jednak był dosyć ciekawy. |
|
DejaVu |
» 2012-10-31 21:19:33 No to napisz sobie taką funkcję, a następnie napisz tą 'magiczną linijkę' i sprawdź czy zadziała. Następnie przeanalizuj co ona robi i wszystko stanie się jasne :) |
|
enzoMatrix Temat założony przez niniejszego użytkownika |
» 2012-10-31 21:26:53 Rzeczywiście działa:) w sumie nie wiem do czego było to GlownyBohater.klatka*60 widać tylko jedną postać co jest super. Ale rzeczywiście kiepsko go pokazuje tak "kwadratowo" |
|
« 1 » |