- 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