Why do actors bounce/launch eachother?

I was having a similar issue and after some debugging with watching the velocity I determined in my case it is happening due to the function UCharacterMovementComponent::JumpOff which is called when the base (ground) changes to an actor the pawn can’t SetBase on (which is the case for pawns basing other pawns.)

I decided to override APawn::CanBeBaseForCharacter and allow certain pawns to always be able to SetBase on each other but there is also CanCharacterStepUpOn which can be used to control this.

With this solved a new issue comes up though which appears to be the true root of the problem is that occasionally pawns colliding with other pawns end up on top of one another. I’ve not yet determined what causes this but it appears to happen somewhere in the movement component code. I may just override and restore their last known good position when this happens which while a hacky solution should solve this hopefully.

EDIT: After overriding my characters movement component and reworking the PhysWalking function to revert the move if a SetBase was called on a pawn with another pawn everything appears to be working great. It’s not the ideal solution but until I have more time to look into it - it seems to be working fine.