Timer für Spiel
-
Hi, wollte ein Animierbares Objekt unabhängig von der FPS animieren.
Dazu brauche in einen Timer oder sowas. Oder muss ich jedesmal nen eigenen Thread erzeugen, welcher mir die einzelnen Bilder eines Animierbaren Objektes wechselt ?
Hatte vorher immer nur einen Zähler in der Hauptschleife und dann wenn zähler = Wert, wechsele Bild! Aber will es unabhängig von der Hauptschleife und demnach unabhängig von der FPS animieren.Wie realisiert ihr das ? Könnt Ihr mir nen Beispiel geben, oder benutzt ihr einfach getTickCount() und fragt dann hunderttausendmal ab, ob zeit gekommen ist ?
-
Schau dir das XGamesSDK und SnakeZ an.
Bye, TGGC \-/
-
Was ist mit Dir los, TGGC??
Wo bleibt *DER* Link?!?
*kopfschüttelndwegdreh*
-
So, für Nukem:
Bitte lesen. Danke.Bye, TGGC (Reden wie die Großen)
-
Thanx@TGGC
Werde deinen XTimer übernehmen...NATÜRLICH nur für Lernzwecke
PS: Bis auf dein Photo sind deine Homepage und deine Demos recht cool *roofl
:p
MFG
-
Tja, ich _bin_ es eben.
Bye, TGGC \-/
-
*lol
-
timeGetTime() - reicht für den Anfang
-
Ich mache es immer so:
void Update(int dt); void Draw(); int last_ticks = GetTickCount(); while (!done) { int ticks = GetTickCount(); int dt = ticks - last_ticks; last_ticks = ticks; Update(dt); // man kann auch den Mittelwert ueber die letzten 10 Frames nehmen, usw, usw. Draw(); cout << "FPS: " << 1000.0f / dt << endl; FlipScreen(); // o.Ae. Delay(5); // evtl. um auf ca. 200 FPS zu beschraenken }
Update(int dt) updated das Spielgeschehen, wobei 'dt' Millisekunden verstreichen sollen. (Fuer Animationen kannst Du dann z.B. die Frameabstaende in Millisekunden angeben und pro Animation schrittweise die verstrichenen Millisekunden mitzaehlen und bei Ueberschreitung der Framezeit das naechste Frame beginnen. Alle Spritegeschwindigkeiten speicherst Du als Pixel/Millisekunde, dann kannst Du sagen: x = x + v * dt, usw.)
Sowieso wichtig ist dass das Update()n und das Draw()en unabhaengig voneinander implementiert ist.
-Gunnar