1
Fenêtrage / Re : Délai avant répétition événement isKeyPressed
« le: Mars 05, 2016, 03:45:26 pm »
Bonjour et merci de votre réponse,
je viens donc de tester le keypressed totalement en dehors de la boucle d'événement (car je pensais qu'il fallait s'en servir dans la boucle d'événement tout de même)
cependant j'ai maintenant un autre problème. Lorsque j'étais dans la boucle d’événement, le personnage se déplaçait correctement, c'est à dire bel et bien à une vitesse de pixel par pixel, mais maintenant, l'animation est certes fluide et sans le temps d'arrêt au départ, mais ça se déplace beaucoup trop vite :/
Et si je diminue la vitesse en 0.5 dans le move par exemple, il y a des transformations de pixels sur l'image.
Y aurait-il aussi un moyen de régler cette vitesse sans abîmer l'image et garder la fluidité de mouvement ?
Merci d'avance
je viens donc de tester le keypressed totalement en dehors de la boucle d'événement (car je pensais qu'il fallait s'en servir dans la boucle d'événement tout de même)
while (this->window->isOpen())
{
sf::Event event;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
mario.move(-1, 0);
mario.setTexture(marioLeft);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
mario.move(1, 0);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
mario.move(0, -1);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
mario.move(0, 1);
mario.setTexture(marioFace);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
mario.move(-1, -1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
mario.move(-1, 1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
mario.move(1, -1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
mario.move(1, 1);
while (this->window->pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
this->window->close();
}
}
{
sf::Event event;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
mario.move(-1, 0);
mario.setTexture(marioLeft);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && !sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
mario.move(1, 0);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
mario.move(0, -1);
}
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
mario.move(0, 1);
mario.setTexture(marioFace);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
mario.move(-1, -1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
mario.move(-1, 1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
mario.move(1, -1);
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
mario.move(1, 1);
while (this->window->pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
this->window->close();
}
}
cependant j'ai maintenant un autre problème. Lorsque j'étais dans la boucle d’événement, le personnage se déplaçait correctement, c'est à dire bel et bien à une vitesse de pixel par pixel, mais maintenant, l'animation est certes fluide et sans le temps d'arrêt au départ, mais ça se déplace beaucoup trop vite :/
Et si je diminue la vitesse en 0.5 dans le move par exemple, il y a des transformations de pixels sur l'image.
Y aurait-il aussi un moyen de régler cette vitesse sans abîmer l'image et garder la fluidité de mouvement ?
Merci d'avance