Hello all.
I'm looking towards building a player controller. I know, there is one already in the joint library, but it has a few features missing that I really want in my controller. Basically, it's about not letting the controller climb up steps or ramps with absolutely no speed loss.
I'm looking toward the idea of a customisable speed penalty for the following sort of situations
Ramp: Shallow gradient .. moderate gradient .. steep gradient .. absolutely unclimbable.
Steps: Low height .. moderate height .. large height .. absolutely unclimbable.
With examples being.
Ramp shallow penalty: 10 degrees, 0% min slowdown, 15% max
Ramp moderate penalty: 45 degrees, 15% min, 60% max
Ramp steep penalty: 65 degrees, 60% min, 100% max
Small step penalty: 10 cm, 0% min slowdown, 15% max
normal step penalty: 30 cm, 15% min, 66% max
tall step penalty: 60 cm, 66% min, 100% max
The idea also would be that the penalty would be reversed if the controller was going down a slope rather than up. The penalty would apply to steps whether going up or down, because which normal person would sprint down a flight of steep steps at full speed?
But this is all just planning, because currently the controller isn't moving around the way I would like it to. The player controller is currently a cylinder with an upvector joint attached to it. I was warned that the upvector would cause the body to spin... And that's exactly what's happening. But this only happens whilst the body is on the floor - in space it moves around correctly. So my first real question is, why does it spin, even when no torque is applied during the callback? My other question is, that I'm looking at using a 6dof joint from the joint library but I can't find any official documentation for the joint library, so I'm a little nervous about using it because I don't know if I would be giving the wrong parameters.
Does the joint library player controller use just raycasts, or does it use upvectors/6dof joints? It might help me get an idea on where to start with it.
Thanks...
[Edit] Currently, the world and controller have separate materials applied, and the elasticity between them is 0. Everything else about the materials is default values.

