If the player doesn’t have control, I don’t think adding movement input will do anything. SetActorLocation()
has an overload option to sweep for collision before attempting to move, with the last bool being an option to teleport with your momentum or not:
FHitResult HitResult;
character->SetActorLocation(new_pos, true, HitResult, true);
You could also try using AddImpulse to the character instead, launching them with a certain velocity.