[SDL2 OpenGles2] Animowanie Sprajtów
Ostatnio zmodyfikowano 2024-01-30 20:41
tBane Temat założony przez niniejszego użytkownika |
[SDL2 OpenGles2] Animowanie Sprajtów » 2024-01-30 20:28:00 Witam. Piszę grę i zastanawiam się jak poprawnie animować bohatera w grze. Klasa bohatera: enum class direction { N, S, W, E };
class unit { public: float x, y; float rx, ry; float s; float tw, th; float cx, cy; int time; bool run; direction dir; float speed; float distance; float currentFrame; GLuint tex_N[ 4 ]; GLuint tex_S[ 4 ]; GLuint tex_W[ 4 ]; GLuint tex_E[ 4 ]; unit(); ~unit(); void move( direction ); void setPosition( float, float ); void update( int time ); void render( camera * ); };
No i dorzucę jeszcze całkowicie błędną funkcję update. Nie rozumiem w ogóle jak przetwarzać czas i jak wyznaczyć obecną klatkę animacji i z tym właśnie zwracam się do was. void unit::update( int time ) { if( time / FPS > this->time / FPS ) { if( run ) { if( dir == direction::N ) y += speed * s; if( dir == direction::S ) y -= speed * s; if( dir == direction::W ) x -= speed * s; if( dir == direction::E ) x += speed * s; currentFrame += 1; if( currentFrame >= 4.0f ) currentFrame = 0; this->time = time; run = false; } } }
|
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-01-30 20:41:22 Jednak rozwiązałem sam ten problem. Działa. currentFrame +=( speed * s ) /( distance * s ); |
|
« 1 » |