Tout d'abord essayes de nous fournir des sources minimales
Ce n'est pas dans mes habitudes de balancer le code complet comme un bourrin mais là il est plutôt simpliste et j'ai l'impression que le souci peut venir de n'importe où. Mais j'essaierai d'écourter la prochaine fois c'est noté
.
...si tu souhaites avoir un mouvement fluide je te conseille de traiter tes déplacements en real-time.
Testé, mais ça n'a rien changé malheureusement. Et l'utilisation d'un array de booléen permet d'obtenir des mouvements fluides en principe. Un petit exemple pour illustrer :
enum keys { UP, DOWN, LEFT, RIGHT, SPACE, KEY_MAX };
bool activeKeys[KEY_MAX] = { false };
int main()
{
while (window.isOpen())
{
sf::Event event;
//pollEvent
while (window.pollEvent(event))
{
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Q) { activeKeys[LEFT] = true; }
}
if (event.type == sf::Event::KeyReleased)
{
if (event.key.code == sf::Keyboard::Q) { activeKeys[LEFT] = false; }
}
}
//fin pollEvent
//Move Perso
if (activeKeys[LEFT]) { monPerso->move(LEFT); }
}
}
Est-t-il possible qu'il y ait un "fail" au niveau du pollEvent pendant ne serait-ce qu'un seul passage de boucle et que de ce fait la valeur de
sf::Event::KeyPressed passe à
NULL et donc que ce soit considéré comme une touche relâchée ?
Edit: Je viens de regarder l'état des valeurs de activeKeys[] en console et tout est correct, pas un seul changement d'état tant que la touche est enfoncée. A part ça tout va bien maintenant, j'ai reboot win 10 et plus de souci
.