SFML - timer
Ostatnio zmodyfikowano 2011-04-27 14:21
Handy90 Temat założony przez niniejszego użytkownika |
SFML - timer » 2011-04-27 09:00:31 Siemka, słuchajcie jak zrobić żeby po naciśnięciu strzałki np. w prawo postać przesunęła mi się o 32pix ale zrobiła to wolno przypuśćmy, że potrzebowała by 1s by to zrobić. pozd. |
|
SeaMonster131 |
» 2011-04-27 14:08:50 < upss, SDL z SFML mi sie pomylił > |
|
DejaVu |
» 2011-04-27 14:13:06 |
|
WiecznyWem |
» 2011-04-27 14:21:19 Do takiego zastosowania, najlepsze będzie liczyć przesunięcie, na podstawie delty. W klasie sf::RenderWindow, jest funkcja GetFrameTime(). Korzystając z niej, zabezpieczysz się przed tym, że aplikacja działa różnie na innych komputerach. Jedynym minusem jest to, że trzeba operować na "troszkę" większych liczbach. Przykładowo: int speed = 500; sf::Image img; img.Create( 50, 50, sf::Color::Red ); sf::Sprite foo( img ); foo.SetPosition( 150, 150 );
if( ) { foo.Move( 0, Okno.GetFrameTime() * speed ); }
//Fajnie tu by było zrobić zdarzenie inputowe, albo KeyPressed, wtedy ładnie zobaczysz efekt; Oczywiście, ten sposób nadaje się tylko do pewnego rodzaju zastosowań. Natomiast, aby zrobić coś, co ma się wykonywać co np. sekundę, można zrobić coś takiego: sf::Clock zegar; sf::Image img; img.Create( 50, 50, sf::Color::Red ); sf::Sprite foo( img ); foo.SetPosition( 150, 150 );
if( zegar.GetElapsedTime() >= 1 ) { zegar.Reset(); foo.Move( 0, 32 ); }
Jak widzisz, są to proste rozwiązania. //Pisałem całość z pamięci i nie sprawdzałem kodu. |
|
« 1 » |