# 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?

Just don’t use “transform.InverseTransformDirection.” Make it only “rigidbody.velocity.”