-
bouger un objet
Bonjour,
Comment je peux bouger un objet (par exemple une voiture dans une course), d'une façon qu'il soit plus proche à la realité.
j'ai essayé plusieurs methodes:
1)si vitesse=x bouger la voiture de x pixel par unité de temps.
2)utiliser un Threed.sleep((1/vitesse)*unité de temps)
3)utliser les timer.
aucune de ces méthode n'a donné des resultats satisfaisantes. Je veux savoir s'il y a des solutions plus pertinente.
Cordialement
-
Dans les jeux, la boucle infinie devrais toujours avoir une durée d'exécution constante donc je ne pense pas que ce soit adéquat de mettre un sleep là.
Je pense que la solution c'est la 1 mais l'unité de temps ce serait le temps que met la boucle à s'exécuter.
-
Mais le probleme qu'avec la méthode 1, à une grande vitesse la voiture semble sauter, y'a plus la continuité de mouvement, et c'est un peu moche.
-
Si la voiture saute c'est que tu n'as pas assez de fps, le temps d'exécution de la boucle n'est pas trop long? Ton code est-il optimisé?
-
Salut,
personnellement je te conseillerais d'utiliser un Timer appelant ta fonction effectuant les tests du jeu toutes les 5-30 ms, le double-buffer du GameCanvas et pour le mouvement tu stockes la vitesse dans ton sprite, ensuite une translation sur x donne (tout en float) :
x' = x + distance * speed;
tu peux faire ca plus proprement avec des vecteurs. Je pense que ton problème réside dans le fait d'utiliser des int ou alors que le temps d'itération de la boucle principale est trop élevé.