- Home /
LookRotation return weird values
Iam trying to smoothly rotate a gameobject to face a position but Quaternion.LookRotation is returning some weird values that don't seem to match the rotations.
The eulerangle rotation seems to jump between (somerotation here, 270, 90) and (somerotation here, 90, 270). It doesn't make any sense to me at all. I tried different upwards vectors but this doesn't seem to make sense either. All I want is to smoothly rotate a object in 2D so this should be easy.
var rotateDirection = Quaternion.LookRotation(TargetPositionSource2D.TargetPosition.Value - (Vector2)transform.position, Vector3.back);
transform.rotation = Quaternion.RotateTowards(transform.rotation, rotateDirection, 5 * Time.deltaTime);
Answer by maxxa05 · Sep 08, 2016 at 10:24 PM
I'm not sure of your setup, but it's probably the cast to Vector2 that is the issue. You'd be better to get the direction between the transform and the target as a Vector3, because the cast to Vector2 and back to Vector3 can mess up your vectors. The up vector will be the vector that is perpendicular to the rotation plane.
If you want to change the LookRotation to be in 2D, you should set the element perpendicular to the rotation to 0.
For example, if you rotate around y, set the y of your (targetPosition - transformPosition) vector to 0 and set the up vector as Vector3.up (or Vector(0, 1, 0)).
Your answer
Follow this Question
Related Questions
Basic AI Locked Axis 1 Answer
Rotate object with quaternion to direction points 1 Answer
More specific Quaternion.LookRotation 1 Answer
Confused with LookRotation in C# 1 Answer
LookRotation Vector3 is Zero, Yet Slerp Still Rotates? 2 Answers