Hallo,
ich versuche seit längerem ein kleines Jump & Run zu programmieren. Ursprünglich hatte ich mit mehreren ggf. parallel laufenden TTimer-Komponenten für die Spielerbewegung gearbeitet (Einen Timer für links und rechts, einen Timer für die Sprungprozedur bzw. die "Fall"-Prozedur). Dies ermöglichte es mir bspw. die Spielergeschwindigkeit während des Sprungs unabhängig von der Geschwindigkeit für Links/Rechts einzustellen. So, dass die Bewegung nach oben langsamer abläuft, als die Bewegung zu Seite...
So weit so gut. Funktioniert auch super... Der Nachteil: Das Spiel läuft auf verschiedenen Rechnern durch die TTimer-Komponente unterschiedlich schnell. Also musste eine bessere Lösung her.
Habe es nun mit einem OnIdle-Timer mit GetTickCount() versucht. Die Spielerbewegung ist nun auf allen Rechnern gleich, jedoch kann ich ja nunmehr lediglich
einen Timer verwenden. Hat jemand eine Idee wie ich dennoch z.B. die Jump-Prozedur verzögert ablaufen lassen könnte? Sleep(x) ist leider keine Option, da ich ja hiermit direkt die ganze Anwendung lahm lege, die anderen Objekte jedoch dieselbe Geschwindigkeit beibehalten sollen.
Meine Idee wäre es vllt. den Timer auf ein Intervall von 1 oder gar 0(?) zu stellen und ggf. während des springens bspw. nur bei jedem 5. oder 10. "Tick" eine Bewegung auszuführen...? Ich bin mir nicht sicher ob das möglich ist (oder gar Sinn macht?). Wenn doch...
Wie könnte so eine Abfrage aussehen?
Ich weiß, meine Herangehensweise ist vermutlich ziemlich unprofessionell, aber vllt. hat ja dennoch jemand Lust mir zu helfen? Danke!
