Hi,
I make some script based on character controler but I got a problem after lot of hours of development :/.
I want my player can move mecanism with his mass (like rigidbody) but when I mount on my device (only physics device) I can’t move the platform.
So, do I restart all with “rigidbody + collider” or try something with character controler. Or combine character controler + rigidbody but it’s not a good solution…
You’re right: mixing CharacterController and Rigidbody is really a bad idea (unless it’s a kinematic rigidbody).
To simulate physical effects like pushing rigidbodies, you can use this:
var force = 5.0;
function OnControllerColliderHit(hit: ControllerColliderHit){
if (hit.rigidbody){ // if the hit object is a rigidbody...
hit.rigidbody.AddForce(-hit.normal * force); // apply a force pushing the object
}
}
This will push any rigidbody hit in the opposite direction. If you want to only push down rigidbodies with the character’s “weight”, check the hit.normal elevation angle (hit.normal is a normalized vector, thus its Y coordinate is numerically equal to the sine of the elevation angle):
...
if (hit.rigidbody && hit.normal.y > 0.96){ // if hit.normal > 75 degrees...
hit.rigidbody.AddForce(Vector3.down * force); // apply a down force
}