You are overusing the const keyword.
Declaring parameters const is meaningful for references and pointers, but on the top-level (like const sf::Vector param) it clutters the interface with irrelevant information. The caller doesn't care whether the function modifies a copy of the value. For return types, const is not only useless, but also harmful, as it prevents move semantics (which can be relevant for more complex types).
I suggest to use this keyword only in the places where it actually expresses semantics, and not everywhere it fits. That helps making code more readable and understandable. Ironically, you are not using const in these places (e.g. the functions in the Mouse or Collision namespaces).