Announcement

Collapse
No announcement yet.

Geschwindigkeit von Objekten bestimmen !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Geschwindigkeit von Objekten bestimmen !

    Wie kann ich die Geschwindigkeit von Objekten den unterschiedlichen
    Taktfrequenzen, der einzelnen Computer, anpassen ?

  • #2
    Das ist unter Windows ein SEHR schwieriges Problem weil es keine genauen Timer gibt. Desweiteren werden Events manchmal vom Betriebssystem "verzögert" so daß ein Timer auch wenn er selbst genau genug ist nicht immer gleich genau verarbeitet werden kann. Ein gutes verfahren ist es, sich für die Bewegung eine "betriebssystemunabhängige" Zeitbasis zu besorgen. Das ist z.B. Gettickcount. In der Praxis geht man dann so vor:<br>
    1. Objekt zeichnen, gettickcount merken (oldcount)<br>
    2. Spielschleife durchlaufen (Tasten, KI etc.)<br>
    3. gettickcount holen. oldcount davon abziehen. ergibt verstrichene zeit zwischen letztem zeichnen und neuer position<br>
    4. bewegungsvektor des objektes mit diesem zeitintervall multiplizieren und durch zeitbasis teilen<br>
    5. objekt um bewegungsvektor verschieben<br>
    6. wieder bei 1. anfangen<br>
    <br>
    auf diese art und weise erhält man auf allen rechnern gleich schnelle animationen. auf langsamen rechner "hüpft" das objekt größere strecken, auf schnellen rechnern legt es die gleiche strecken in der gleichen zeit nur mit mehr schritten, also "sanfter" zurück. aufpassen muß man nur bei kolisionsabfragen. (auf langsamen rechnern kann ein objekt durch ein hindernis "hindurchhüpfen"

    Comment


    • #3
      Hi,

      ich habe s noch nie ausprobiert, aber siehe dir mal die API Funktionen QueryPerformanceFrequency und QueryPerformanceCount an. Vielleicht helfen diese etwas weiter.

      Philip

      Comment

      Working...
      X