- Home /
Duplicate Question
How can I get the velocity of an object in relation to the world?
All I can find are local velocity questions. Well I've been using
transform.InverseTransformDirection(rigidbody.velocity);
in my player's script to make my camera adjust its speeds according to the player.
Then I've been using
void Update ()
{
xPosition = player.transform.position.x;
yPosition = player.transform.position.y + 5f;
zPosition = player.transform.position.z - 14f;
xPosMulti = 1f + (playerScript.playerVel.x * 0.0001f);
yPosMulti = 1f + (playerScript.playerVel.y * 0.0001f);
zPosMulti = 1f + (player.rigidbody.velocity.magnitude * 0.01f);
transform.position = new Vector3(xPosition * xPosMulti, yPosition * yPosMulti, zPosition * zPosMulti);
}
in my camera. It works really well, even if it's a little too jumpy for me (Any way to make it feel more springy?), except that it "Looks" the wrong way when my player (Which is just a cube) is upside down. I want to cube to be able to rotate, so locking its z rotation isn't an option.
Further details: It's a side-scrolling game with a cube as a player. The camera follows the cube and when the cube goes faster, the camera looks further in that direction. Unfortunately, when the cube is upside-down, the camera looks backward instead of forward. I assume this is because my "transform.Inverse etc" line is measuring the velocity of my player in relation to its direction, not the direction in the world. How do I fix this?
You could use the SmoothFollowCamera script from Standard Assets
That doesn't seem to work very well with my game. Anything but max or nonexistent height damping makes the camera shake and it doesn't help going left or right at all since I'm sliding and not rotating.
Answer by AnomalousX12 · Mar 25, 2014 at 06:59 AM
Just don't use "transform.InverseTransformDirection." Make it only "rigidbody.velocity."