SFML - animacja
Ostatnio zmodyfikowano 2010-12-06 16:33
Handy90 Temat założony przez niniejszego użytkownika |
SFML - animacja » 2010-12-05 08:35:26 Siemka, wiecie może jak zrobić animacje mojego żołnierza. Mam 48 grafik na każdą pozycje przypada po 12(lewo, prawo, góra, dół). Nie chcę gotowego kodu tylko sposobu jak to zrobić, będę bardzo wdzięczny. pozd. |
|
waxx |
» 2010-12-05 10:56:01 najlepiej uloz kolejne grafiki w pasek i w odpowiednim czasie wycinaj z tekstury tylko tyle ile potrzeba aktualnie :) |
|
Handy90 Temat założony przez niniejszego użytkownika |
» 2010-12-05 20:29:48 A może jakiś przykładzik bo SFML to moja pierwsza biblioteka graficzna i ciężko mi się w tym połapać. Jeszcze miałbym prośbę jak ktoś czai ten temat(SFML) niech do mnie napisze 10914428. pomoże mi zacząć przygodę:) |
|
waxx |
» 2010-12-05 22:15:45 potrzebujesz jakiegos timera i gdy np minie zalozmy 100ms zmieniasz klatke czyli ustawiasz swojemu spritowoi inny subrect (Sprite.SetSubRect) tak aby obejmowal tylko nowa klatke animacji
|
|
Proxym |
» 2010-12-05 22:59:38 Na wiki SFML jest jak zrobić sobie animacje. Proszę: http://sfml-dev.org/wiki/en/sources/animation |
|
Handy90 Temat założony przez niniejszego użytkownika |
» 2010-12-06 10:53:13 Możesz mi pokazać jak to zrobić:
#include <SFML/Graphics.hpp>
int main() { sf::RenderWindow App( sf::VideoMode( 800, 600, 32 ), "Okienko" ); sf::Image Mapa, Soldier0, Soldier1, Soldier2, Soldier3; Mapa.LoadFromFile( "mapa.bmp" ); Soldier0.LoadFromFile( "soldier0.bmp" ); Soldier1.LoadFromFile( "soldier1.bmp" ); Soldier2.LoadFromFile( "soldier2.bmp" ); Soldier3.LoadFromFile( "soldier3.bmp" ); sf::Sprite sprite( Mapa ); sf::Sprite sprite0( Soldier0 ); sf::Sprite sprite1( Soldier1 ); sf::Sprite sprite2( Soldier2 ); sf::Sprite sprite3( Soldier3 ); while( App.IsOpened() ) { sf::Event Event; while( App.GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed ) App.Close(); if( App.GetInput().IsKeyDown( sf::Key::Left ) ) sprite3.Move( - 40, 0 ); else if( App.GetInput().IsKeyDown( sf::Key::Right ) ) sprite2.Move( 40, 0 ); else if( App.GetInput().IsKeyDown( sf::Key::Down ) ) sprite0.Move( 0, 40 ); else if( App.GetInput().IsKeyDown( sf::Key::Up ) ) sprite1.Move( 0, - 40 ); } App.Clear(); App.Draw( sprite ); App.Draw( sprite0 ); App.Draw( sprite1 ); App.Draw( sprite2 ); App.Draw( sprite3 ); App.Display(); } return EXIT_SUCCESS; }
Bo teraz mam tak, że jak nacisnę strzałkę w lewo to idzie mi grafika(sprite3) a jak w prawo to sprite2 a mi chodziło o to by to były klatki animacji a nie oddzielne grafiki. |
|
DejaVu |
» 2010-12-06 16:33:30 int iKlatka = 0; while(...) { switch( iKlatka ) { case 1: App.Draw( sprite0 ); break; case 2: App.Draw( sprite1 ); break; case 3: App.Draw( sprite2 ); break; case 4: App.Draw( sprite3 ); break; default: App.Draw( sprite ); break; } iKlatka =( iKlatka + 1 ) % 5; }
|
|
« 1 » |