use PlayerMovementEvent to handle movement