Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Elekhyr le Mai 16, 2014, 09:18:29 pm

Titre: [help] Deplacer un sf::RectangleShape
Posté par: Elekhyr le Mai 16, 2014, 09:18:29 pm
Bonsoir ! J'ai commencé à faire un Blockbreaker en c++ avec sfml mais je bloque sur le déplacement du sf::RectangleShape, j'ai créé la fonction deplacer() de mon objet Paddle :


        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
        {
                m_Rectangle.move(-10, 0);
        }
        else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
        {
                m_Rectangle.move(10, 0);
        }
 

mais c'est très saccadé et j'aimerai un truc fluide (et il y a aussi un délai que j'aimerai enlever quand je presse la touche)

Pouvez vous m'aider ? :)
Titre: Re : [help] Deplacer un sf::RectangleShape
Posté par: math1992 le Mai 17, 2014, 06:09:30 am
Il faudrait plus de code...

Cette partie se trouve t'elle dans la boucle des évènements, à l'extérieur de celle-ci, où ailleurs?

Titre: Re : [help] Deplacer un sf::RectangleShape
Posté par: G. le Mai 17, 2014, 09:36:44 am
Essayez de prévenir quand vous crosspostez (http://en.sfml-dev.org/forums/index.php?topic=15254.0) pour éviter aux gens qui aident de perdre du temps.  ;)
Titre: Re : [help] Deplacer un sf::RectangleShape
Posté par: PtichapronRouge le Mai 17, 2014, 11:44:13 am
je te conseille d'aller faire un tour par ici :
http://www.sfml-dev.org/tutorials/2.1/window-events-fr.php
et notamment de lire ce paragraphe (écrit en rouge) :
Citer
Parfois, les gens essayent de réagir directement à l'évènement KeyPressed pour créer des mouvements continus. Or, cela ne produira pas des mouvements continus mais plutôt saccadés : lorsque vous maintenez une touche vous n'obtenez en effet que quelques évènements (souvenez-vous du délai de répétition). Afin d'obtenir des mouvements fluides avec les évènements, vous devez utiliser un booléen mis à true lors de l'évènement KeyPressed et à false lors de l'évènement KeyReleased ; vous pouvez ensuite effectuer des déplacements (indépendamment des évènements) tant que le booléen est à true.
L'autre solution (plus simple) pour produire des movements continus est d'utiliser les entrées temps réel avec sf::Keyboard (voir le tutoriel dédié).
;)