Вы не показываете код, которым манипулируете объектом sf :: Sprite, поэтому я (или кто-то еще, действительно) не могу сказать наверняка, но ... тем не менее, у меня есть сильное предположение относительно того, что происходит.
Я недавно тоже познакомился с SFML и сам столкнулся с этой проблемой. Я думаю, что происходит, когда вы вызываете sf :: Sprite :: Move (x, y), чтобы переместить спрайт в позицию (x, y). Это неверно; то, что вы должны вызывать, это sf :: Sprite :: SetPosition (x, y). (Обе эти функции принимают вместо двухмерного вектора аргумент, кстати).
Я работаю в предположении, что вы используете SFML 1.6, да? Выглядит так ... версия 2.0 несколько меняет API, поэтому в случае использования Sprite :: Move () становится Sprite :: move (), а Sprite :: SetPosition () становится Sprite :: setPosition ().
В любом случае, чтобы обернуть это: разница между Move (x, y) и SetPosition (x, y) состоит в том, что Move корректирует позицию спрайта относительно его текущей позиции , тогда как SetPosition перемещает спрайт на новую должность независимо от того, где она была раньше.
Опять же, это слепое предположение, так как соответствующий код не был включен ... так был ли мой выстрел в темноте правильным?