In this situation you can override AActor::Tick function for your Character class:
void Tick (float DeltaSeconds) override;
This function is designed to implement custom logic that should be executed every frame. Thus, you can put custom movement logic inside overridden Tick and get the desired result. (The most convenient way would be to create a separate method with DeltaSeconds parameter, place movement-related code there and call from Tick).
Please note that this function is disabled by default so you’ll need to check PrimaryActorTick.bCanEverTick is set to true to enable it.