When CharacterController collides with other dynamic rigidbody, mass/velocity affect nothing, but it did affect by other rigidbody’s gravity vector, see action below:


When CharacterController collides with other dynamic rigidbody, mass/velocity affect nothing, but it did affect by other rigidbody’s gravity vector, see action below:


Nice catch. I will double check some of the latest fixes have not already dealt with this use case and, if not, log this as a new issue.
are we certain it’s being affected by the gravity/impulse in the first case?
Here’s another theory:
If we set a crazy amount of physics solver iterations (like 256) and see that the character gets pushed much less, then that would confirm it
In this case, I can’t think of a fix aside from adding the option to make the character completely ignore dynamic rigidbodies, and just plow through them without any velocity loss and not try to decollide from them. A bunch of games do that
This is still happening with the latest changes.
We haven’t investigated the details but I’d agree with you assessment; it probably is just collision resolution. A middle ground could be to not move the character for interpenetrating dynamic bodies that are above the max step height, allowing the capsule to at least raise up with moving platforms etc. I fully expect users to customise any minimum solution provided but if there is a consensus of what the default should be out of the box I’ll log that.
I took a look at this. Character applies the impulses to dynamic bodies, and that’s one way of collision resolution. However, it doesn’t always stop the dynamic object completely, and it sometimes keeps going towards the character, causing penetration. Then, character tries to resolve penetration and moves away.
The other problem is that applying impulse to dynamic bodies is not an iterative process, but instead it’s done once after all the collide was finished.
It doesn’t happen only with vertical forces, it just depends on how you hit the character with a dynamic body. I managed to reproduce even with throwing a box horizontally, but not all the time.
The real question is - what would you like to see happen here? @filod @PhilSA We could apply higher (unrealistic) impulses to rigid bodies, or never react on them and plow through as @PhilSA mentioned. Or leave as is… I think all are viable options, it depends on the use cases I guess.
This is an issue that I’ve never been able to find a solution to in my own CC, so I think we need to either live with the imperfection, or choose the option I mentioned earlier
what i expect is that i can handle such case more manually to create gameplay stuff, such as hit back by a boulder (create impulse by mass ratio)