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

[SFML] Pętla sałokrokowa

Ostatnio zmodyfikowano 2013-12-09 16:45
Autor Wiadomość
kokon
Temat założony przez niniejszego użytkownika
[SFML] Pętla sałokrokowa
» 2013-12-08 15:00:34
Witam!
Według tego tutoriala [url]http://devblog.alfa-leporis.cba.pl/index.php/kurs-sfml2/czas-petla-stalokrokowa-i-operowanie-widokiem/[/url] zrobiłem sobie pętlę stałokrokową. Problem w tym, że ta pętla przyśpiesza. Zamieszczam kod, który ma odpowiadać za obracanie sprite'a (Zmienia samą zmienną odpowiadającą za kąt).

C/C++
sf::Clock clockshine;
float accumulatorshine = 0;
float TIME_STEP_SHINE = 0.03f;

accumulatorshine += clockshine.restart().asSeconds();
if( accumulatorshine > TIME_STEP_SHINE )
{
   
    if( rotateshine >= 360.0 )
         rotateshine = 0.0;
    else
         rotateshine += 0.0001;
   
    accumulatorshine -= TIME_STEP_SHINE;
};

Na początku wszystko działa dobrze, ale im dłużej działa aplikacja, tym obraz obraca się szybciej.

Jeszcze kod ustalający obrót (tak, obracam za pomocą jednej zmiennej dwa sprite'y ale obydwa przyśpieszają. Dodatkowo wyświetlanie ich jest umieszczone w innej pętli stałokrokowej (tak łatwiej było ustawić szybkość obrotu)):
C/C++
shinezero.rotate( rotateshine );
shineone.rotate( - rotateshine );
oknoAplikacji.draw( shinezero );
oknoAplikacji.draw( shineone );
P-98692
pekfos
» 2013-12-08 15:06:33
Zamiast rotate() użyj setRotation().
P-98695
kokon
Temat założony przez niniejszego użytkownika
» 2013-12-08 15:21:17
Dzięki wielkie, jak na razie działa świetnie, aczkolwiek zostawię program na jeszcze trochę i zobaczę czy nie przyśpieszy ;P
P-98698
Mitu
» 2013-12-09 16:45:59
Sprawdź sobie jaka jest różnica między rotate() a setRotation().
P-98803
« 1 »
  Strona 1 z 1