Je fais un jeu de plateforme 2d où le joueur peut appuyer sur un bouton et redémarrer le niveau, seul leur personnage précédent exécutera également le niveau en même temps, comme s'il voyageait dans le temps.
Je sais que d'autres jeux l'ont déjà fait auparavant, et la façon dont j'ai pensé le faire est de faire en sorte que le personnage du jeu ait un ensemble d'actions (ralenti, sauter, marcher à gauche, etc.), puis détecter les changements dans ces actions et les connecter à une liste avec le temps de jeu. Ainsi, lorsque j'ai besoin que le personnage exécute à nouveau le niveau de lui-même, je peux simplement parcourir la liste en modifiant ses actions au bon moment.
Est-ce la meilleure façon de le faire? Quelqu'un at-il une expérience dans ce domaine?
Merci.
la source
Réponses:
É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:
Un contrôleur a deux modes:
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:
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:
Ensuite, le niveau commence et le joueur fait son truc.
la source
Si vous relisez des entrées enregistrées, tenez compte des implications de tout objet en mouvement / destructible / interactif dans le monde, qui peut avoir bougé ou changé d'état lors de la relecture des actions
De plus, la relecture des entrées ne fonctionnera pas précisément si votre jeu utilise un pas de temps variable. Vous voudrez peut-être envisager une mise à jour du jeu à pas de temps fixe (avec interpolation pour le rendu à fréquence d'images variable)?
la source
Il y a beaucoup de sujets qui couvrent les systèmes d'enregistrement / de relecture de jeux / etc. qui devraient probablement être la clé de voûte de vos précédentes passes.
En voici une: comment concevoir un système de relecture
la source
L'enregistrement de l'entrée clavier peut ne pas être très utile dans votre cas. Vous pouvez cependant générer une spline avec une chronologie. Vous pouvez même rembobiner le temps si vous êtes délicat avec les forces que vous devez appliquer
la source