Create a custom CharacterMovementComponent
and override SetPostLandedPhysics
:
void UShooterCharacterMovement::SetPostLandedPhysics(const FHitResult& Hit)
{
// call for non-authority only because this is already called for authority elsewhere
if (CharacterOwner && CharacterOwner->GetLocalRole() != ROLE_Authority && CharacterOwner->ShouldNotifyLanded(Hit))
{
CharacterOwner->OnLanded(Hit);
}
Super::SetPostLandedPhysics(Hit);
}