After many tests and a lot of debugging, I figured out what my problem was:
- If I read the collision solid from the egg file, or if I create a CollisionBox, then the pusher works perfectly and I slide gracefully against the surface.
- If I create a bunch of CollisionPolygons myself, then the pusher is confused because each polygon is now a separate object: corners are a mess.
In short: 20 quads are not equivalent to one Polyset.
Which brings me to my next question:
[url]Procedural generation of collision polyset.]