- Home /
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?
Answer by N00MKRAD · Jul 29, 2014 at 11:19 AM
Attach that script to your player:
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;
}
Like I said, that's easy enough to do. That's not the part I want.
What I want is for the object to push the character, not the other way around.
Oh sorry, I didnt read it exactly...
As far as I know all objects with a rigidbody will push the controller, the problem is: They push it with infinite force. But if your character controller can push it back, will that work?
I hope I can halp you.