Object push character controller?

Hello.
I’m working on a character controller script.
As I’m working… it seems easy enough to make the script push other rigidbodies. It seems impossible, however, to make rigidbodies push the character, particularly if the character is standing still as the character does not seem to detect collisions at all in that case.

Does anybody have any info to share on this, or am I just SOL?

Attach that script to your player:

Download script

Or copy it:

// this script pushes all rigidbodies that the character touches
var pushPower = 2.0;
 
function OnControllerColliderHit (hit : ControllerColliderHit)
{
    var body : Rigidbody = hit.collider.attachedRigidbody;
 
    // no rigidbody
    if (body == null || body.isKinematic) { return; }
 
    // We dont want to push objects below us
    if (hit.moveDirection.y < -0.3) { return; }
 
    // Calculate push direction from move direction,
    // we only push objects to the sides never up and down
    var pushDir = Vector3 (hit.moveDirection.x, 0, hit.moveDirection.z);
 
    // If you know how fast your character is trying to move,
    // then you can also multiply the push velocity by that.
 
    // Apply the push
    body.velocity = pushDir * pushPower;
}