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

Auteur Sujet: Déplacement personnage  (Lu 2852 fois)

0 Membres et 1 Invité sur ce sujet

Faren

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Déplacement personnage
« le: Octobre 03, 2013, 02:07:14 pm »
  Bonjour,

Je reviens avec un problème que je ne sais pas résoudre (plus dur que le dernier  :P)
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

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Déplacement personnage
« Réponse #1 le: Octobre 03, 2013, 02:30:17 pm »
Citer
if(sf::Event::KeyPressed)
Sérieusement ? T'as lu la doc et les tutoriels ? :P

Sinon, essaye de prendre un float en paramètre de tes fonctions de mouvement, il est probable que ton déplacement par frame soit inférieur à 1 (donc 0 si converti en entier).
Laurent Gomila - SFML developer

Faren

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Déplacement personnage
« Réponse #2 le: Octobre 03, 2013, 02:38:43 pm »
Merci le problème venait du float