Hard to say what’s happening without setting debug break points.
Educated guess would be that
void UCharacterMovementComponent::HandleImpact(const FHitResult& Impact, float TimeSlice, const FVector& MoveDelta)
Is called and the impulse that is applied is not taking into account that both sides are moving with the same speed.
would suggest to set a breakpoint at the places that add force/impulse and see
a) where it’s comming from
b) where the calculation goes wrong
At “Stay Based in Air” thanks for that didn’t know about that option yet, last time I needed It I build it myself.