I prevent Character A from pushing Character B just by sweeping the body towards the movement direction (just like kinematic character controllers do). If a rigidbody is found, then i ask: "Should the character push this object?"If so, then let the physics do the job. if not, then modify the velocity using the collide and slide algorithm (the character in video is sliding at 0:06-0:07).
See 1:56
(C’mon Unity forum! Timestamps do not work at all… it is almost 2021)
BTW “Contact modification” is being developed: