Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Convertir time en float  (Lu 2545 fois)

0 Membres et 1 Invité sur ce sujet

Scol-Ben

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Convertir time en float
« le: Août 08, 2014, 10:20:19 pm »
Bonsoir, avant de parler de mon problème, je ne sais pas du tout si je suis dans la bonne section et aussi j'ai posté mon problème ici car j'utilise un objet Time qui est utilisé avec SFML.

Voilà je souhaite convertir l'objet Time en Float car je souhaite faire en sorte de gérer la vitesse de mon application pour éviter les problèmes de vitesse entre deux config n'ayant pas les mêmes vitesses pour afficher une image/sec. (Je sais pas si vous avez compris ^^)

const int deplacement;
float deplacementFPS;

Clock clock;
while(window.isOpen())
{
       window.clear();
       ....
       Time frameTime = clock.restart();
       deplacementFPS += deplacement * frameTime;
}

Et ensuite utiliser la méthode move :

monSprite.move(0.0, -deplacementFPS); // Ceci est un exemple.

Merci de votre aide.

PS : encore une fois si le nom de mon sujet ne correspond pas à mon problème ou s'il n'est pas aux bons endroits merci de me le dire j'éditerai.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Convertir time en float
« Réponse #1 le: Août 08, 2014, 10:51:41 pm »

Scol-Ben

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : Convertir time en float
« Réponse #2 le: Août 08, 2014, 11:07:11 pm »
Parce-que je l'ai déjà lu, après j'ai quand même encore du mal à le comprendre mais si tu regardes mon code c'est la même chose.

Mise à part dans le tutoriel à la fin il appel une fonction "updateGame(elapsed);" et je ne sais pas ce qu'elle contient.

Mon code est correct en ce qui concerne le chrono, etc... c'est juste par rapport au mouvement de mon sprite, les paramètres de la fonction son de type float.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Convertir time en float
« Réponse #3 le: Août 09, 2014, 03:02:50 pm »
Citer
De la même manière, une variable sf::Time peut être convertie en secondes, en millisecondes ou en microsecondes :

sf::Time time = ...;

sf::Int64 usec = time.asMicroseconds();
sf::Int32 msec = time.asMilliseconds();
float     sec  = time.asSeconds();

C'est pas clair ? :P

Sinon il y aussi la doc de l'API à potasser. Ou encore les exemples du SDK, dont certains font ce que tu veux faire.
Laurent Gomila - SFML developer

Scol-Ben

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : Convertir time en float
« Réponse #4 le: Août 09, 2014, 03:45:56 pm »
Autant pour moi ^^

Donc au final sa revient au même si sa aurais fonctionné comme ceci :

deplacementFPS += deplacement * frameTime;

Que ceci :

deplacementFPS += deplacement * frameTime.asSeconds();

? Sinon j'ai une petite question, lorsque je déplace mon sprite au début il va à une bonne vitesse mais plus il fait de tour dans la boucle principale, plus mon sprite va très vite.

Pourtant j'ai bien utilisé juste après :
clock.restart();

Merci.

PS : Je n'ai pas comprit ce que tu me propose de chercher par rapport avec SDK x)

Scol-Ben

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : Convertir time en float
« Réponse #5 le: Août 09, 2014, 03:52:28 pm »
Pour ma question je n'ai pas réfléchit, encore une fois je suis désoler, car j'ai oublié mais ma variable 'deplacementFPS' fessait une une sorte d'incrémentation '+=' alors j'ai changé par '=' mais maintenant mon personnage court très très lentement, pourtant la vitesse est de '3.0' * par 'frameTime.asSeconds()' logiquement mon sprite devrais avancer de 3 pixels * 'frameTime.asSeconds()' mais la j'avance à peine de 1 pixel, je sais même pas.

Sinon fallait t-il bien réinitialiser le chrono à 0 à la fin de ma boucle ?

Scol-Ben

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : Convertir time en float
« Réponse #6 le: Août 09, 2014, 04:00:26 pm »
Dernier message, car la sinon je vais trop flooder.

J'ai finalement réussi, il fallait que je passe ma variable 'deplacement' à '200.0' maintenant mon sprite se déplace à une vitesse normale et j'ai testé de limité mon FPS à 10, au final sa fonctionne comme je le souhaité.

Merci.