ÉDITER:
Veuillez voir la réponse de @ Bluescrn à cette question; il développe les faiblesses dans la relecture des commandes plutôt que les vecteurs de mouvement ou la position.
-
Vous êtes sur la bonne voie. Voici l'approche que j'utiliserais:
Contrôleurs
Créez une classe Controller qui reçoit les entrées du clavier et les transmet à votre personnage. Cependant, ayez également un enregistrement de contrôleur exactement quand les touches significatives (par exemple flèches, saut, etc.) ont été enfoncées et quand elles ont été relâchées. Il stockerait ce type d'informations:
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
Un contrôleur a deux modes:
- Enregistrement: Reçoit une entrée au clavier. Enregistre l'entrée dans la liste. Remet l'entrée de caractères en fonction de l'état du clavier.
- Rejouer: ignore la saisie au clavier. Les progrès dans la liste en millisecondes se sont écoulés depuis le début du niveau. Remet l'entrée de caractères basée sur l'état du clavier enregistré au moment actuel.
Personnages
Lorsque votre objet Personnage est construit, il crée un nouveau contrôleur pour lui-même. Le personnage peut être dans l'un des deux modes à tout moment:
- Actif: Il n'y a qu'un seul personnage actif et c'est celui que vous contrôlez. Lorsque le personnage est en mode actif, son contrôleur est en mode enregistrement. Par défaut, lorsqu'un personnage est construit, il est en mode actif.
- Ghost: c'est celui qui rejoue vos actions passées. Lorsqu'un personnage passe en mode fantôme, il change son apparence et règle son contrôleur en mode relecture.
Niveaux
Un niveau fraîchement commencé
Lorsque vous démarrez le niveau, créez un seul personnage. Maintenant, le niveau commence et le joueur fait son truc.
Quand le temps revient
Lorsque le niveau est réinitialisé, faites trois choses:
- Dites au personnage actif actuel d'entrer en mode fantôme.
- Créez un nouveau personnage.
- Appelez tous les personnages pour se réinitialiser. Cela les remettra à la position de départ sans mouvement, etc.
Ensuite, le niveau commence et le joueur fait son truc.