- Home /
[C#] Gradually rotate player object towards where mouse is pointing
I am making a third person camera. I make it so when W is pressed the player object Y rotates towards where the mouse is looking. When W is not being pressed the user can rotate the camera around the player. Its like The Last of Us camera. The problem is that when W is pressed the player object suddenly rotates fast rather then gradually rotating. Sorry for my english I am russian. Here is the code.
if (Input.GetKey(KeyCode.W))
{
Quaternion lookRotation = Quaternion.Euler(new Vector3(target.transform.localRotation.x,
mouseXRotation,
target.transform.localRotation.z));
playerObject.transform.localRotation = lookRotation;
}
Is there a way to rotate smoothly rather than it just snapping to the rotation?
Answer by RudyTheDev · Dec 31, 2014 at 05:14 PM
transform.localRotation
and transform.rotation
are quaternions (4 dimensions), not euler angles (3 dimensions). If you use target.transform.localRotation.x
, then you will get a nonsensical result rather than 0-360 degrees.
You can use Quaternion.Lerp (or Quaternion.RotateTowards) every Update()
if you want smooth transition. You can search for "quaternion rotate" for various explanations. Something like this answer.
I tried that and it didnt work. It isnt even rotating now.
if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.W))
{
Quaternion lookRotation = Quaternion.Euler(new Vector3(target.transform.localRotation.x,
mouseXRotation,
target.transform.localRotation.z));
Quaternion.RotateTowards(target.transform.localRotation, lookRotation, 3f);
}
You cannot use target.transform.localRotation.x
-- this is not an euler rotation, it is not in degrees at all.
You can try transform.eulerAngles = Vector3.RotateTowards(target.transform.eulerAngles, lookRotation, 3f)
lookRotation
would be something like new Vector3(target.transform.eulerAngles.x, mouseXRotation, target.transform.eulerAngles.z)
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
Positions to rotations of a regular GO 2 Answers