Bonjour,
Je reviens avec un problème que je ne sais pas résoudre (plus dur que le dernier
)
Je fais bouger un personnage créé dans une classe qui se nomme player, l'appel pour bouger le personnage se fait dans la boucle while. Mon personnage ne bouge presque pas (environ 1px par seconde) quand je reste appuyer sur une touche. Par contre quand je fais sauter mon personnage celui-ci saute bien et retombe normalement.
Je ne sais pas ce qui cloche.
le main
Player Perso;
while (window.isOpen())
{
sf::Event event;
float elapsed = clock.restart().asSeconds();
//float fps=(1.0/elapsed); // C'est pour calculer le nombre de fps
//cout <<fps<<endl;
float deplacement=speed*elapsed;
Perso.gravite();
vsaut=175;
float dsaut=vsaut;
dsaut+=gravity;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if(event.key.code ==sf::Keyboard::Space && event.type==sf::Event::KeyPressed && Perso.getSauter()==true)
{
Perso.sauter(dsaut);
}
}
if(sf::Event::KeyPressed)
{
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Q))
{
Perso.mouvementGauche(deplacement);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
{
Perso.mouvementBas(deplacement);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
Perso.mouvementDroite(deplacement);
}
}
Player.cpp
void Player::mouvementGauche(int vitesse)
{
if(Scollision->collision(sPerso,Mmap->getSprite4())== false)
sPerso.move(-vitesse,0);
else sPerso.move(3,0);
if(Scollision->collision(sPerso,Mmap->getSprite5())== false)
sPerso.move(-vitesse,0);
else sPerso.move(3,0);
}
void Player::mouvementBas(int vitesse)
{
if(Scollision->collision(sPerso,Mmap->getSprite4())== false)
sPerso.move(0,vitesse);
else sPerso.move(0,-3);
if(Scollision->collision(sPerso,Mmap->getSprite5())== false)
sPerso.move(0,vitesse);
else sPerso.move(0,-3);
}
void Player::mouvementDroite(int vitesse)
{
if(Scollision->collision(sPerso,Mmap->getSprite4())== false)
{sPerso.move(vitesse,0);}
else sPerso.move(-3,0);
if(Scollision->collision(sPerso,Mmap->getSprite5())== false)
sPerso.move(vitesse,0);
else sPerso.move(-3,0);
}
void Player::sauter(int haut)
{
sPerso.move(0,-haut);
saut=false;
}
Merci pour votre aide