krystiant94 Temat założony przez niniejszego użytkownika |
[SFML 1.6] Pomoc w animacji postaci » 2012-07-14 16:28:43 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 : ) |
|
wojownik266 |
» 2012-07-14 16:40:19 Nie wiem czy dobrze Cię zrozumiałem ale tak się składa ze mam taką prostą animacje pod ręką.
#include <iostream> #include <SFML/Graphics.hpp>
const int ScreenWidth = 640; const int ScreenHeight = 480;
const int sDown = 128; const int sLeft = 191; const int sRight = 64; const int sUp = 0;
int main() { sf::RenderWindow Window( sf::VideoMode( ScreenWidth, ScreenHeight, 32 ), "CodingMadeEasy Tutorials" ); sf::Image tempImage; sf::Sprite playerSprte; if( tempImage.LoadFromFile( "word.jpg" ) ) playerSprte.SetImage( tempImage ); float velx = 0, vely = 0; float x = 320, y = 240, moveSpeed = 0.1; int sourceX = 0, sourceY = sDown; while( Window.IsOpened() ) { sf::Event Event; while( Window.GetEvent( Event ) ) { if( Event.Type == sf::Event::Closed || Event.Key.Code == sf::Key::Escape ) Window.Close(); } if( Window.GetInput().IsKeyDown( sf::Key::Right ) ) { sourceY = sRight; velx = moveSpeed; } else if( Window.GetInput().IsKeyDown( sf::Key::Left ) ) { sourceY = sLeft; velx = - moveSpeed; } else velx = 0; if( Window.GetInput().IsKeyDown( sf::Key::Up ) ) { sourceY = sUp; vely = - moveSpeed; } else if( Window.GetInput().IsKeyDown( sf::Key::Down ) ) { sourceY = sDown; vely = moveSpeed; } else vely = 0; x += velx; y += vely; if( velx != 0 || vely != 0 ) sourceX += tempImage.GetWidth() / 4; else sourceX = 0; if( sourceX == tempImage.GetWidth() / 4 ) sourceX = 0; Window.Clear(); playerSprte.SetSubRect( sf::IntRect( sourceX, sourceY, sourceX + tempImage.GetWidth() / 4, sourceY + tempImage.GetHeight() / 4 ) ); playerSprte.SetPosition( x, y ); Window.Draw( playerSprte ); Window.Display(); } return 0; }
|
|
krystiant94 Temat założony przez niniejszego użytkownika |
» 2012-07-14 16:58:55 To jest animacja poruszania się, a mi chodzi o animacje postaci. Po naciśnięciu np przycisku, ma zostać w prawidłowy sposób wyświetlonych 6 klatek postaci. |
|
wojownik266 |
» 2012-07-14 17:08:27 |
|
m4tx |
» 2012-07-14 17:18:26 To jest animacja poruszania się, a mi chodzi o animacje postaci. Po naciśnięciu np przycisku, ma zostać w prawidłowy sposób wyświetlonych 6 klatek postaci. |
Przerobić wystarczy... |
|
wojownik266 |
» 2012-07-14 17:22:59 Bardzo ładnie to ująłeś! Dokładnie tak jest jak rzekłeś! |
|
krystiant94 Temat założony przez niniejszego użytkownika |
» 2012-07-14 20:14:38 Napisałem już prostą animacje, lecz wygląda ona mniej więcej 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 ] ); ................................... Jak myślicie, jak to upchnąć w jedną pętle ? |
|
krystiant94 Temat założony przez niniejszego użytkownika |
» 2012-07-16 00:29:15 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 » 2 |