BEARBEITEN:
Bitte lesen Sie die Antwort von @ Bluescrn auf diese Frage. Er geht eher auf Schwächen bei der Wiedergabe von Steuerelementen als auf Bewegungsvektoren oder Positionen ein.
- -
Du bist auf dem richtigen Weg. Hier ist der Ansatz, den ich verwenden würde:
Controller
Erstellen Sie eine Controller-Klasse, die Tastatureingaben empfängt und an Ihren Charakter weitergibt. Lassen Sie jedoch auch einen Controller genau aufzeichnen, wann die wichtigen Tasten (z. B. Pfeile, Sprünge usw.) gedrückt wurden und wann sie losgelassen wurden. Es würde diese Art von Informationen speichern:
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
Ein Controller verfügt über zwei Modi:
- Aufnahme: Empfängt Tastatureingaben. Zeichnet Eingaben in der Liste auf. Übergibt die Zeicheneingabe basierend auf dem Tastaturstatus.
- Wiedergabe: Ignoriert Tastatureingaben. Fortschritte in der Liste nach Millisekunden, die seit Beginn des Levels vergangen sind. Übergibt die Zeicheneingabe basierend auf dem aufgezeichneten Tastaturstatus zum aktuellen Zeitpunkt.
Figuren
Wenn Ihr Character-Objekt erstellt wird, erstellt es einen neuen Controller für sich. Der Charakter kann sich jederzeit in einem von zwei Modi befinden:
- Aktiv: Es gibt immer nur einen aktiven Charakter, den Sie steuern. Wenn sich der Charakter im aktiven Modus befindet, befindet sich sein Controller im Aufnahmemodus. Wenn ein Charakter erstellt wird, befindet er sich standardmäßig im aktiven Modus.
- Ghost: Dies ist derjenige, der Ihre vergangenen Aktionen wiederholt. Wenn ein Charakter in den Ghost-Modus wechselt, ändert er sein Aussehen und setzt seinen Controller auf den Wiedergabemodus.
Ebenen
Ein frisch begonnenes Level
Wenn Sie das Level starten, erstellen Sie einen einzelnen Charakter. Jetzt beginnt das Level und der Spieler macht sein Ding.
Wenn die Zeit zurückgesetzt wird
Wenn das Level zurückgesetzt wird, machen Sie drei Dinge:
- Weisen Sie den aktuellen aktiven Charakter an, in den Ghost-Modus zu wechseln.
- Erstelle einen neuen Charakter.
- Rufen Sie alle Charaktere auf, um sich selbst zurückzusetzen. Dadurch werden sie ohne Bewegung usw. wieder in die Ausgangsposition gebracht. Sie weisen ihre Controller an, ohne gedrückte Tasten auf Millisekunde 0 zurückzusetzen.
Dann beginnt das Level und der Spieler macht sein Ding.