I read that AddForce “Should be called every frame for the duration of the force.”, but even when I stop applying it, the force is still preserved, and pawn is still going down
You can call StopMovementImmediately() on the pawn movement component if you want to stop movement altogether, or if you’d like to maintain horizontal movement but stop vertical movement, you can do something like GetCharacterMovement()->Velocity *= FVector(1,1,0);
Force does not impart movement, force imparts acceleration.
Position is the integral of velocity.
Velocity is the integral of acceleration.
Acceleration is the integral of force (divided by mass.)
Also, if you have an ACharacterMovementComponent involved, know that the Unreal character is not particularly physical; it does a bunch of hacks to make a typical “action game character” move in a satisfying manner, but it doesn’t behave as per the rules of a rigid body simulation.