OnControllerColliderHit function is not called if player is not performing a move.

Hello,

In my 2D game, there is a part where boulders falls on the player and I need to detect the collisions. If my player is not performing a move the OnControllerColliderHit function is not called and I cannot detect the collisions. I have read that I can use SimpleMove(Vector3.zero);
somewhere in the script (allowing gravity to be applied hence my player will be performing a move). But I am not using charactercontroller script, (required for SimpleMove). I am currently using the character motor + platforming Input controller.

What can I do to solve this issue?
If I have to edit my character motor which lines should I look at?

Any help is appreciated.
Thank you very much.

If you read the docs, that’s how it should work: “OnControllerColliderHit is called when the controller hits a collider while performing a Move.” (emphasis is mine.) If means it only checks during CC.Move or CC.simpleMove.

To check for other stuff hitting you when it moves, just use a regular OnCollisionEnter.

It’s a weird beast since charControllers are weird. They sort of move using “physics,” but not really, since you don’t want players to slide, shove or get shoved in the same way blocks would be.

Do you happen to add or activate something like a rigidbody when you do “a move” character controllers don’t seem to report collisions unless they have a rigidbody attached.