Factor out player movement logic.