Question

Je suis en train de mettre en œuvre un jeu basé sur le tour, il y a deux côtés et chaque côté a plusieurs unités, à chaque instant spécifique, une seule unité peut se déplacer à travers la planche.

Puisque une seule unité peut se déplacer à la fois, après avoir compris où il devrait aller, jusqu'à la simulation, cela peut être téléporté instantanément là-bas, mais en jouant au jeu que vous voudriez voir l'unité en mouvement pour que Vous réalisez qui a déménagé et où il est allé.

La question est, mettriez-vous l'algorithme de mouvement (par exemple interpoler entre 2 points en n secondes) dans le modèle, puis avez la vue montrant l'appareil dans la position interpolée sans même savoir qu'il se déplace, ou de téléporter l'unité et informer la vue qu'il devrait montrer à l'unité de déménager le mieux possible.

Si vous prenez la deuxième approche, comment garderiez-vous la simulation de courir trop loin de la vue, mettez-vous la vue en commandement de la reprise de la simulation après la fin du mouvement?

Merci d'avance, Xtapodi.

Était-ce utile?

La solution

ah, encore un autre exemple qui nous rappelle que MVC n'a jamais été conçu à l'origine pour des graphiques en temps réel.;)

Je stockerais la position actuelle et la position précédente dans le modèle.Lorsque l'objet se déplace, la position actuelle est copiée dans la position précédente, la nouvelle position est copiée dans la position actuelle et une notification est envoyée à la vue que le modèle a changé.La vue peut alors interpoler entre l'ancien et la nouvelle position en conséquence.Il peut accélérer, ralentir ou même retirer l'interpolation entièrement basée sur les paramètres de vue spécifiques, sans nécessiter de données supplémentaires à stocker dans le modèle.

Plutôt que de stocker la position actuelle et la position précédente, vous pouvez plutôt stocker le dernier mouvement avec chaque unité et le déplacement lui-même contient la position précédente.Ceci est probablement plus polyvalent si vous avez besoin de stocker des informations supplémentaires sur un mouvement.

Autres conseils

Ce que vous voulez probablement, c'est que l'image unitaire puisse bouger chaque image.Jusqu'où déplacer l'image chaque image est similaire à votre interpolation.

UnitésPerseconde= TotalUnits / (FramePerseconde * TotaleConds)

Donc, si je veux déplacer une image de la position 0 à la position 60 en 2 secondes et mon framerer est 30, j'ai besoin de déplacer 60 unités dans 60 images, donc ma vitesse est 1. Ainsi, chaque image, je déplace l'image1 unité, et si le déplacement de l'unité me prendra au-delà de ma destination, définissez simplement mon emplacement à ma destination.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top