Character controller and idle (non-sleeping) rigid bodies

Hey

Dynamic rigid bodies detect collision with kinematic and static bodies only from the direction they are moving. E.g. If you have a rigid body moving from left to right and you jump on it with character controller, no OnCollisionEnter() etc methods get called. Same with “idle” rigid body just sitting somewhere, it doesn’t register collision with character controller at all. However, in this case OnControllerColliderHit() gets called in the character controller side, so it would be possible to send a custom collision message from character controller to a rigid body. But this can end up a bit messy sometimes and not very generic.

My question is, how everyone handles situation like this? Is there a “standard” solution ?

One workaround for me was to add a very very low movement so that the idle rigid bodys are not really idle at all. Same for character controller.

you can move only to one direction at each frame though?

I noticed that if add a gameobject with kinematic rigidbody as a child to character controller with slightly larger capsule, then OnCollisionEnter() methods seem to work. But this feels very hacky. Any idea if this is a stable solution ?

You can move to one, two, or three directions, as you like.

Everything working is allowed.