# 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);

}
``````

I see, I should have used Quarternion.Euler(0, 0, lookAngle)

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.