Amazing, all last week I was quietly playing around with physics to see what I might be able to accomplish. I had my pinball machine prototype, little dynamic pinball (0.027m) rolling on a surface hitting proto- bumpers. Bullet did OK but, no collisions reported to the bumper and plunger scripts. I assumed it was my issue.
The I made some steps, and of course the avatar could not climb up them, so I made an invisible ramp, and though the avatar could slide up the ramp (the traversal looks awful, very low-FI), it would slide downhill once I stopped pushing it forward. This happened no matter how high the friction. So, I thought I’d ditch the ramp but add a script to each step such that when the avatar collided on a step side, the script would kick it up a bit. Well, no collision reported. Now I know why.
BTW, avatars are often implemented as kinematic entities and a character controller simulates dynamic motion. This is often done because avatars are special in the sense that their friction behavior is very different when they are being moved by the player/driver versus when they are still. Things like climbing steps require additional system adjustments, so a character controller performs those actions. There can be hybrid approaches too. In some systems, an avatar is kinematic until they stand from sitting, or if they are hit with a strong force. Then they are made dynamic for a while (many ways to help make the reactions look realistic). The problem with making an avatar dynamic all the time is that it means a ton of physics actions go on all the time. For example, we expect ourselves and or avatar representations to know how to stand vertically (against the local gravity field gradient). You can implement that using a vertical attractor, but inevitably, vertical attractors cause a perceptible wobble. We do not like our avatars to look inebriated. We also do not expect our avatars to rock horizontally just because they bumped into something. This would happen if it is modelled as dynamic.
Nonetheless, an avatar, no matter how modelled, needs to create collision events.