When i'm moving sprite in right, up and down direction everything is ok. But when i'm moving left, sprite is moving about 2 times faster. I have repaired this by adding two additionall lines of code. But still i have no idea why this is happening. And should i add this 2 lines below every "if/else"? Or an error is somewhere else? This two additionall lines of code are:
heroSpeedVector.x = 0;
heroSpeedVector.y = 0;
And this is fragment of code responsible for moving.
const float heroSpeed = 0.1;
Vector2f heroSpeedVector;
if(Keyboard::isKeyPressed(Keyboard::Right)){
heroSpeedVector.x = heroSpeed;
guyRectSourceSprite.top = 60;
}
else heroSpeedVector.x = 0;
heroS.move(heroSpeedVector);
if(Keyboard::isKeyPressed(Keyboard::Left)){
heroSpeedVector.x = -heroSpeed;
guyRectSourceSprite.top = 120;
}
else heroSpeedVector.x = 0;
heroS.move(heroSpeedVector);
heroSpeedVector.x = 0;
heroSpeedVector.y = 0;
if(Keyboard::isKeyPressed(Keyboard::Up)){
heroSpeedVector.y = -heroSpeed;
guyRectSourceSprite.top = 180;
}
else heroSpeedVector.y = 0;
heroS.move(heroSpeedVector);
if(Keyboard::isKeyPressed(Keyboard::Down)){
heroSpeedVector.y = heroSpeed;
guyRectSourceSprite.top = 240;
}
else heroSpeedVector.y = 0;
heroS.move(heroSpeedVector);