2017-09-01 6 views
1

Je développe un jeu utilisant LevelHelper (SpriteKit + Box2D) et j'ai rencontré un problème. Box2D dépend du nombre de FPS. Ceux-ci si le 60FPS, puis le corps se déplace à une vitesse de 10 mètres par seconde, si 30FPS, puis à une vitesse de 5 mètres par seconde. Il est nécessaire que quel que soit le nombre de FPS était une vitesse constante.Box2D et Xcode

Existe-t-il une solution pour dissocier Box2D du nombre de FPS?

+0

S'il vous plaît envisager d'accepter ma réponse si elle répond à votre question ou s'il vous plaît ajouter un commentaire expliquant ce qui n'est pas encore clair. Je vous remercie! –

Répondre

2

En ce qui concerne le temps simulé, Box2D dépend uniquement de ce que vous avez défini pour le delta temporel de l'étape mondiale. Si le delta temporel est défini sur 1/60e de seconde, il correspond alors à un rafraîchissement de l'affichage 60FPS mais le delta temporel peut être d'autres valeurs.

De manière générale, la simulation devient plus précise à mesure que le delta temporel diminue. Donc, si au lieu d'utiliser les étapes du monde simulant 1/60e de seconde, vous utilisiez des étapes qui simulaient 1/120e de seconde, vous auriez une simulation plus précise. L'utilisation d'un delta temporel plus petit permet également aux vitesses maximales du corps (en distance parcourue par seconde simulée) d'être plus rapide.

Il appartient à l'utilisateur de la bibliothèque Box2D de déterminer comment coordonner les étapes du monde avec l'actualisation de l'affichage. Sachez simplement que faire varier le temps de pas du monde - comme en utilisant le temps réel écoulé entre les appels à la méthode du pas du monde - peut provoquer des effets physiques irréalistes. Donc, tout en faisant varier le delta temporel du monde au moment de l'exécution pendant une simulation est possible, je ne le recommanderais pas.