[SFML]Animacja sprita
Ostatnio zmodyfikowano 2012-09-04 18:18
waxx |
» 2012-09-03 18:58:37 nie, player moze sobie miec sprita w sobie |
|
Dawidsoni |
» 2012-09-03 20:25:03 @waxx
Dlaczego animacja sprajta != tweenowanie?
To nie jest przekombinowane, tylko zrobione tak, żeby nie działało tylko na sprajtach, ale na wszystkim co się da rysować. Może z początku wygląda zawile... To, że zrobiłem osobną klasę do uruchamiania animacji, nie oznacza, że kod jest przekombinowany, bo to niesie ze sobą dodatkowe korzyści...
|
|
bingo009 |
» 2012-09-03 20:32:17 Co do klasy postać i animacja, nie lepiej było by klase z animacją zrobić dziedziczną? |
|
DejaVu |
» 2012-09-03 21:50:22 Hm... na Games Bonanza sprzed roku napisałem animację w oparciu o dziedziczenie (zapewne żeby było kodu mniej) ;p class CAnimation : public sf::Sprite { public: CAnimationSequence m_sequence; CAnimation( const char * sAnimationName ); void nextFrame(); };
CAnimation::CAnimation( const char * sAnimationName ) { m_sequence = sequence( sAnimationName ); std::string sFileName = m_sequence.getCurrentFrame(); SetImage( getImage( sFileName.c_str() ) ); }
void CAnimation::nextFrame() { m_sequence.nextFrame(); SetImage( getImage( m_sequence.getCurrentFrame().c_str() ) ); }
|
|
RazzorFlame |
» 2012-09-04 18:18:18 Ja sobie niedawno zrobiłem też taką klase. Pierw stworzyłem sobie klase "Frame". Posiadała ona 4 zmienne typu int które oznaczały pozycje wycinania na bitmapie i szerokość i wysokość. Poźniej stworzyłem klase "Animation" w której przechowywałem vector obiektów typu "Frame", prędkość zmieniania klatki itd, timer (sf::Clock) który odpowiadał za liczenie czasu i resetowałem go przy przeminięciu czasu zmieniania klatki. Poźniej stworzyłem klase "CSprite" przechowującą np. pozycje obrazka na oknie, timer przesuwania sie, kilka innych rzeczy i oczywiście vector obiektów typu "Animation". Wiesz dlaczego vector? Bo chciałem żeby ludek miał kilka animacji. Powiedzmy animacja 0 to stanie w miejscu, 1 to poruszanie sie, 2 to strzelanie itp. |
|
1 « 2 » |