Bonjour (ou bonsoir ) ! Jusqu'à maintenant, j'utilisais la V-SYNC pour limiter mes FPS. Mais je suis dis que ça poserait des problèmes d'avoir 90 FPS sur un écran 144 Hz (c'est un exemple). J'ai alors décidé d'enlever la limite. Je me retrouve face à un problème de vitesse de mouvements . J'ai fait des recherches dans mon coin et j'ai découvert la technique delta time, qui consiste à avoir une vitesse constante et indépendante duframerate en calculant le temps d'une frame.
Pour calculer le temps d'une frame, je fais comme ça :
auto lastTime = std::chrono::high_resolution_clock::now();
La vitesse initiale verticale avec laquelle un personnage quitte le sol ne dépend pas du delta. En gros, on ignore la phase d'accélération qui permet le saut, et c'est probablement ce que tu as essayé de modéliser. Mais une fois qu'on a quitté le sol, il n'y a plus que la gravité qui fait varier la vitesse, négativement, et donc seule compte la vitesse initiale verticale, qui est à priori constante dans un jeu.
PS: De même, la vitesse de déplacement horizontale est une constante, donc ta variable speed est mal nommée. Il devrait y avoir une constante Speed avec une valeur 0.03f (ou une variable si la vitesse peut l'être), et par exemple, une variable "move = Speed * delta".
Ah oui, je comprends mieux, maintenant, merci ! Je crois d'ailleurs avoir trouvé la solution . Grâce à ce site, j'ai réussi à avoir le résultat que je voulais. J'avais déjà rencontré cette solution sur plusieurs sites, mais à chaque fois, je ne pouvais plus bouger à l'horizontal. En faite, c'était juste une (stupide) erreur dans les calculs de collision .
Saut + gravité avec delta time
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.