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

Auteur Sujet: apréhender le deltaTime  (Lu 4375 fois)

0 Membres et 1 Invité sur ce sujet

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
apréhender le deltaTime
« le: Février 14, 2015, 11:18:42 am »
Bonjour .

J'aimerais gérer la vue en utilisant un delta sf::Time qui calcule le temps de chaque frame en microseconds, afin d'avoir un mouvement de caméra le plus fluide possible...

Je prend donc le parti de créer une variable "_viewValue" , qui va calculer le ratio des déplacements en fonction, donc, du deltaTime, et également de la taille du zoom . ( le but étant de bouger plus ou moins vite en fonction du zoom qui est oppéré sur la scène : plus on est proche, plus c'est lent et inversement ).

Je me retrouve alors avec une interrogation ( de débutant ) : comment bien gérer cette équation pour que la vitesse soit la même quelque soit la machine qui fait tourner le programme? Car je me retrouve a "bricoler" des mathématiques de façon un peu hasardeuse...ce qui donne :


        _zoomRation = _viewMaximumZoom / _view.getSize().x ;
        _viewValue =  10 / _deltaTime * _zoomRation ;

 

puis enssuite, j'ai, bien sur :


        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
        {
            _view.move(-_viewValue,0);
        }
        etc...

 

( maximumZoom étant une constante de la taille.x de la fenêtre minimum que le zoom puisse atteindre, soit le plus proche )

 Ma question :

Selon vous, ce code vous parait-il fiable/correct ? et ce quelque soit la puissance de la machine qui fait tourner le programme ?

Merci si vous pouvez m'aider

ps: je me suis finalement mi a l'anglais...Je suis grand, maintenant  ;D
« Modifié: Février 14, 2015, 11:22:56 am par mazertys17 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : apréhender le deltaTime
« Réponse #1 le: Février 14, 2015, 01:14:15 pm »
La formule est très simple :

deplacement = vitesse * temps

Ensuite tu n'as plus qu'à faire varier la vitesse en fonction du niveau de zoom.

Citer
ps: je me suis finalement mi a l'anglais...Je suis grand, maintenant
;D
Laurent Gomila - SFML developer

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
Re : apréhender le deltaTime
« Réponse #2 le: Avril 22, 2015, 10:32:02 pm »
ok, merci  ;)

Maintenant, je ne sais pas si cela vient de mon code, mais quand je place un sf::time en référence dans une class pour l'utiliser, pour par ex le déplacement de la view, depuis une autre class, il fait n'importe quoi, ou plante ( sans m'éclairer particulièrement dans le débug ).


            _data.setDeltaTime( 1 ) ;
           _view.move ( _data.getDeltaTime() , 0 ) ;
 
( sachant que _data contient une référence sur le deltaTime crée depuis le main et qui est censé être à une seconde.

or si je fais ceci :

            sf::Time bidul;
            bidul = sf::seconds ( 0.1 ) ;
           _view.move ( bidul.asSeconds() , 0 ) ;
 

ca marche.
Voilà, donc je voudrais savoir si un sf::Time a des conditions d'utilisation particulières ?

Merci si vous pouvez m'aider.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : apréhender le deltaTime
« Réponse #3 le: Avril 22, 2015, 10:46:43 pm »
Citer
je voudrais savoir si un sf::Time a des conditions d'utilisation particulières ?
Non.
Laurent Gomila - SFML developer

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
Re : apréhender le deltaTime
« Réponse #4 le: Avril 23, 2015, 09:52:39 am »
ok, merci pour ta réponse  ;)

Je note cependant que quand j'utilise une référence d'un sf::Time, cela ne fonctionne pas, alors que la même chose avec un pointeur fonctionne...
J'utilise exactement le même procédé avec une sf::RenderWindow et cela fonctionne en référence...
Cela ne peut-il venir que de mon code, selon vous ?

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : apréhender le deltaTime
« Réponse #5 le: Avril 23, 2015, 11:03:18 am »
Ouai, y'a sûrement quelque chose que tu fais mal.

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
Re : apréhender le deltaTime
« Réponse #6 le: Avril 23, 2015, 11:46:20 am »
ok...je vais voir ca. Merci  ;)