EDIT: Hopefully it will be clearer with a little drawing:
As you can see, it seems that – with PhysX 3 – as soon as capsule B’s radius is greater than capsule A’s radius+height, B climbs over A (maybe because of the round smooth shape of B’s bottom half-sphere?), even though B’s stepOffset is much smaller. PhysX 2 didn’t do that.
It seems that the behavior of capsule auto-stepping for controllers hitting each other has changed from PhysX 2 (NxCapsuleController) to PhysX 3 (PxCapsuleController)?
I have 2 capsule controllers, with the following parameters same for both:
- slopeLimit : 35° (correctly stored as cosine, i.e. 0.819)
- stepOffset : 0.50 m
- climbingMode : eCONSTRAINED (precisely PxCapsuleClimbingMode::eCONSTRAINED)
Now the capsule A has:
- height : 2.00 m
- radius : 1.00 m
(for a total height of 2.00 + 2*1.00 = 4.00 m)
and capsule B has:
- height : 1.00 m
- radius : 2.00 m
If I move B onto A (by successive calls to move() with a displacement vector towards A), the behavior is the same with both PhysX 2.8.3 and 3.2.4: B is “blocked” by A and slides horizontally around it (against the sides).
But now if I increase B’s radius to e.g. 3.00 m (or more),
then with PhysX 2, B is still blocked by A, but with PhysX 3, B rides over A! as if the radius were added to the stepOffset for auto-stepping?
How to fix that?
Thank you very much…