I think the only main improvement it needs is that you can just turn on the spot. Maybe you could do a check for the player's velocity, and if it's below x you can't turn? Or multiply the turn speed by the velocity?