- Home /
RotateAround() faster than rotate
Hi everybody
I am trying to make a camera follow an object's rotation. The object is rotating using transform.rotate and the camera is rotating using rotatearound. However it has turned out that the two rotations are using different units(?) - or at least I think so. When I set the "rotationspeed" (I know that is not what it is called) to be the same in both rotate and rotatearound they do not rotate at the same speed. The camera is faster than the object. I think it has something to do with rotate using euler and rotatearound not doing this - but that is just a guess. How can I overcome this problem?
The code used for the rotation:
//The Camera
transform.RotateAround (target.position, Vector3.up, rotateSpeed * Time.deltaTime);
//The Object
transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime);
I hope someone out there can help me :)
For the case you gave - using a multiple of Vector3.up - I wouldn't expect these to behave differently. They're both documented to be using degrees. The only difference I see is that "Rotate" defaults to rotate in local space, while "RotateAround" rotates in world space. So if your local Y axis is not aligned with the world Y axis, they would give different results.
With Rotate, if you pass only a vector then it is interpreted as a vector of Euler angles, but if you pass a separate float for the angle then the vector is interpreted as a rotation axis. So you could separate that in the same way that you do for RotateAround. I doubt this would affect your result though.
transform.Rotate(Vector3.up, rotateSpeed * Time.deltaTime, Space.World);
Answer by AnfractuousOne · Jul 31, 2017 at 01:18 PM
@Lampeskaerm I've got this exact issue. Did you ever get to the bottom of the problem?
Your answer
Follow this Question
Related Questions
Joystick Rotation with Transform.RotateAround 0 Answers
instant rotate an object 3 Answers
Camera Orbit Rotation Problem 0 Answers
Rotate One Object Around Another 1 Answer
Rotate exactly on time 1 Answer