- Home /
Rotate Towards doesnt work as expected
I am creating an enemy that moves towards the player but without precision. I though rotatetowards would work for this but with this script, the rotation always defaults to -180 and doesnt change. I'm not sure if Rotatetowards is the wrong thing to use, or if plugging the float "lookangle" directly into lookrot.z is incorrect
void Update()
{
player = GameObject.FindGameObjectWithTag("Player");
targetTimer -= Time.deltaTime;
if(targetTimer <= 0)
{
targetPos = player.transform.position;
targetTimer = maxTargetTimer;
}
lookDirection = targetPos - transform.position;
lookAngle = Mathf.Atan2(lookDirection.y, lookDirection.x) * Mathf.Rad2Deg;
lookRot.z = lookAngle;
transform.Translate(Vector3.right * speed * Time.deltaTime);
transform.rotation = Quaternion.RotateTowards(transform.rotation, lookRot, maxTurn * Time.deltaTime);
}
Answer by Bunny83 · Jul 13, 2020 at 11:46 PM
RotateTowards expects the current rotation as quaternion and a target rotation as quaternion. We don't know where and how you initialized your "lookRot" variable but if you don't have any compiler errors we would assume that lookRot is also a Quaternion. In this case the line
lookRot.z = lookAngle;
makes no sense. A quaternion is a 4 dimensional complex number. Unit quaternions are used to represent rotations in 3d space. The 4 components of a quaternion are in the range -1 to 1 and do not represent euler angles. The 3 imaginary parts represent the axis of rotation and the real part the cosine of half the angle.
You might be looking for something like Quaternion.Euler(0,0,lookAngle)
. However without knowing how you initialized your "lookRot" originally or if any rotation offsets are involved we can't give a clear answer.
Answer by JiveViking · Jul 13, 2020 at 11:37 PM
I see, I should have used Quarternion.Euler(0, 0, lookAngle)
Your answer
Follow this Question
Related Questions
Rotating wrong 0 Answers
RotateTowards with deltaTime Causes Spinning! 0 Answers
knowing 2 vector3, find the 3rd vector3. 3 Answers
Quaternion Shortest Route? 3 Answers
rotate player on y axis or Vector.up regradless of orientation 0 Answers