Physics with CharacterController?


I’m totally lost on how to get physics working properly for a CharacterController. I was using a Rigidbody to do some stuff like jumping and moving around, but whenever I move up a ramp or anything, the force gets all wonky and the character actually never stops moving slightly.

I’ve since changed the Rigidbody to a CharacterController, but for some reason, my CharacterController isn’t reacting to anything. There is absolutely no collision, and it will not respond to gravity and sit on the surface of a plane like I want it to. It simply floats through any obstacles, also. I’ve tried attaching a kinematic Rigidbody to the CharacterController, but that doesn’t change anything unless I set it to not use gravity – in which case everything gets weird and my move keys push me in random directions.

Is there a way to make my CharacterController collide at all without using Rigidbody? And, is there a way to make it react to gravity (say, if I wanted to implement a jump function).


The CharacterController is not a physic-object. That’s actually the point of it :wink:
It’s not influenced by external forces. It’s exclusively moved via script. It does collide with any sort of colliders (as long as they aren’t triggers). I guess you didn’t use the Move function to move the CharacterController… Gravity has to be implemented either manually by adding a downforce to your movement vector or to use the SimpleMove function which applies gravity automatically. You can’t give a manual up(jump)-force with SimpleMove, that’s why you usually use Move().