Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przyspieszanie ruchu animacji

Ostatnio zmodyfikowano 2012-12-10 20:44
Autor Wiadomość
mostrom
Temat założony przez niniejszego użytkownika
Przyspieszanie ruchu animacji
» 2012-12-10 20:44:05
Witam! Napisałem sobie klasę która zAnimizuje mi obrazek. Jednak nie mogę się uporać z niezależną prędkością animacji. Ciągle mam problem z względnością ruchu.

Jeden timer reguluje mi ilość renderowanych klatek gry na sekundę (czyli ile razy w ciągu sekundy ma wykonać się pętla główna.
A co z animacją? Przyspieszając jej ruch będę musiał omijać parę klatek animacji? To bez sensu. Puszczać ją w drugim wątku? Też wydaje mi się zbędne. Proszę o jakieś ciekawe propozycje, bo myślę i szukam i nie mogę iść naprzód z projektem ;/

Dodam, że szybkość wykonania się animacji będzie zależna od np czasu działania aplikacji (czyli przyspiesza płynnie), lub stopniowo (co ileś punktów gracza postać przyspiesza)


EDIT:

Znalazłem potrzebne informacje. Operator % jest niezastąpiony, jednak ciągle nie wiem kiedy go użyć :p
Mechanizm obliczania klatek:
C/C++
class Ludzik
{
public:
    Ludzik()
        : max( 20 )
        , klatka( 0 )
        , czas_startu( 0 )
    { }
    ~Ludzik();
    bool start_anim { czas_startu = SDL_GetTicks(); }
   
    bool anim_szybkoscia( int v ) //parametr nadaje szybkość w klatkach/sekunde
    {
        klatka =(( SDL_GetTicks() - czas_startu ) * max / t ) % max;
        //rysuj klatkę
    }
   
    bool anim_czasem( int t ) //parametr określa czas, w którym wykona się cala animacja
    {
        klatka =(( SDL_GetTicks() - czas_startu ) * v / 1000 ) % max;
        //rysuj klatkę
    }
   
private:
    int klatka; //przechowuje numer klatki
    int czas_startu; // start animacji
   
    int max; //ilość klatek animacji
};
P-70739
« 1 »
  Strona 1 z 1