Hello Unity community, first post here, hope my question formatting is okay! I’m trying to rotate about the z-axis a tower that is looking at the player who can move around the tower on the X-Y plane. I’ve tried multiple functions including Vector3.Slerp, Vector3.Lerp, Quaternion.RotateTowards. They seemed to work but, however, all three have a special case that I do not intend the tower to do: when the player is completely behind the tower, the tower chooses to rotate about its local Y-axis (note: it is a 2d platform and I have rotated the tower object so that +Z points at -X, +Y still pointing at +Y, and +X pointing at +Z).
So what I tried instead was using Quaternion.Slerp to rotate the tower, but as soon as I run the following code the tower slerps to and points forward in the positive z-axis.
Vector3 aimVector = playerPosition - transform.position;
Quaternion newRotation = Quaternion.LookRotation(aimVector, transform.up);
newRotation.x = 0.0f;
newRotation.y = 0.0f;
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, Time.deltaTime * rotateSpeed);