My spaceship is moving forward and backward perfectly using
Vector3f thrustVec = new Vector3f(0, 0, maxThrust * throttlePercentage);
thrustVec = ship_phy.getPhysicsRotation().mult(thrustVec);
So the ship slows down after you 0 the thrust and coasts to a nice stop.
Now to turn.
I’m using torque.
ship_phy.applyTorque(new Vector3f(0, maxTorque * tpf, 0));
That’s for turning to port(left).
But the dampening doesn’t appear to affect that the same way it does for thrust. It just turns endlessly without slowing down.
Am I wrong in thinking that dampening doesn’t affect torque?
I know the method isn’t javadoc’ed… but what do you suppose the two values do?
…especially when you consider that there are also separate setLinearDamping and setAngularDamping methods…
Well that’s what I figured. Which is why I’m confused. The Linear Damping value appears to work at 0.9f but the Angular doesn’t seem to do squat with similar values.
I just set it to 1000000f for Angular at it just spins in place if I give it a touch of torque once.
Argh. Ok. Found the issue. It was me being a bit dense.
Just for everyone else’s possible blunders (but really I doubt anyone will do the same thing) here’s what was going on.
Since I move “space” while keeping the ship still I apply the force on a physics object of the ship and move the world inversely to the movement of the ship.
So if I move the ship forward 10 units I move the world backwards 10 units while keeping the ship still.
When it came to rotation though I applied Torque to the physics body and then applied the rotation Quaternion of the physics body to the world space inversely…
I was doing that by applying the current rotation of the physics body
To the node containing space like this
This has an additive effect on the space node. So although the ship had stopped rotating it was still applying the rotation value to the space node.
Sooooo instead what I did to fix it was this instead. First get the Angular Velocity of the Ship
Then apply THAT (inversely) to the space node.
space.rotate(-angularVelocity.x, -angularVelocity.y, -angularVelocity.z);
Works SO much better now.