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.