Klawisze obsługujesz pewnie w pętli zdarzen (window.pollEvent) w takim wypadku pętla się wykona dopiero gdy okno przyjmie jakieś zdarzenie np. ruch myszki lub ponowne nacisnięcie klawisza. Powinieneś użyć metody :
sf::Keyboard::isKeyPressed(sf::Keyboard::Key);
Oczywiście tą metode używa się poza wyżej wspomnianą pętlą zdarzeń, zwraca ona true jeżeli podany klawisz jest aktualnie wciśnięty. :) Przykład :
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
if(sf:Keyboard::isKeyPressed(sf::Keyboard::Right))
{
// tutaj przesuwasz postac
}
window.clear();
window.display();
}
return 0;
}