I was only using PhysicsCharacter.setGravity(float) on my CharacterController.
I had not noticed PhysicsSpace.setGravity(Vector3f) — whose units are not documented.
Playing around briefly, I find that PhysicsSpace.setGravity(Vector3f) reveals it doesn’t appear to function, either.
new Vector(0f, -.00000001f, 0f)
produces the same linear-velocity (as opposed to accelerating) fall as does
new Vector(0f, -1f, 0f)
Indeed, setting it to Vector3f.ZERO produces the same behavior.
Bottom line is that:
A. PhysicsSpace.setGravity(Vector3f) has no effect whatsoever on my character’s behavior.
B. CharacterControl.setGravity(float) turns off “falling” when passed zero, and otherwise enables what appears to be a constant-speed motion downward regardless of whatever positive value is handed in. The speed of this motion seems not to consider the value passed in. Oddly, in a quick test… handing in a NEGATIVE value for this float produces an UPWARD fall whose speed seems to at least honor the magnitude of the number. However, it does not appear to have any basis in physics (at least, it is not modeling units per second acceleration).
Should I try telling Bullet that down is *positive* Y, and tinker with this floating point number? Sadly, I doubt that PhysicsSpace.setGravity(0f, 9.8f, 0f) will be helpful in telling Bullet that gravity should act toward +Y
tone