[SFML 2.1] Déplacement saccadé

Fermé
Mr Drerrawyn - Modifié par Mr Drerrawyn le 17/05/2014 à 21:43
Bonjour,
Je commence à programmer un jeu 2d, et j'ai un problème pour le déplacement d'un sf::Sprite, mais uniquement quand que reste appuyé sur une même touche, le déplacement saccade, tout va bien au début pourtant, comment faire pour contrer cette erreur de programmation ?

Au cas où, mon main() et mes méthodes de déplacement:

#include <iostream>
#include <SFML/Graphics.hpp>
#include "Config.h"
#include "Defines.h"
#include "Contrôles.h"
#include "Player.h"

using namespace sf;

int main() {

    Config config("config.cfg");

    ContextSettings settings;
    settings.antialiasingLevel = 32;

    RenderWindow window(VideoMode(WIN_HEIGHT, WIN_WIDTH, COLOR_DEPTH), config.getWindowName(), Style::Titlebar | Style::Close, settings);
    window.setVerticalSyncEnabled(true);

    Player heros;

    Control controles;

    Texture texture;

    if( !texture.loadFromFile("res/32x32_Sheet.png", IntRect(0, 0, 32, 32)) )
        std::cout << "Texture non trouvee";

    heros.setTexture(texture);
    Vector2i position;

// Main Loop ==========================
    while( window.isOpen() ) {
        Event event;
        controles.refreshKeyboard();
        controles.playerMove(heros);

    // EVENTS:
        window.pollEvent(event);
        if( event.type == event.Closed || Keyboard::isKeyPressed(Keyboard::Escape) )
            window.close();


    // REMPLISSAGE:
        window.clear(Color(0, 0, 0));

    // DESSIN:
        window.draw(heros.getSprite());

    // AFFICHAGE:
        window.display();

    }
    return EXIT_SUCCESS;
}


Et mes méthodes de déplacement:
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Config.h"
#include "Defines.h"
#include "Player.h"

Player::Player() {
    m_speed = SPEEDBASE;
}

Player::Player(const sf::Texture& texture) {
    m_sprite.setTexture(texture);
}

Player::Player(const sf::Texture& texture, int speed) {
    m_sprite.setTexture(texture);
    m_speed = speed;
}

Player::~Player() {
}

void Player::setSpeed(int newSpeed) {
    m_speed = newSpeed;
}

void Player::setTexture(const sf::Texture& texture) {
    m_sprite.setTexture(texture);
}

// MOUVEMENTS

void Player::moveRight() {
    m_sprite.move(sf::Vector2f(m_speed, 0));
}

void Player::moveLeft() {
    m_sprite.move(sf::Vector2f(-m_speed, 0));
}

void Player::moveUp() {
    m_sprite.move(sf::Vector2f(0, -m_speed));
}

void Player::moveDown() {
    m_sprite.move(sf::Vector2f(0, m_speed));
}

sf::Sprite Player::getSprite() {
    return m_sprite;
}