Vector3 difference = player.position - transform.position;
rotZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.AngleAxis(rotZ + rotationOffset, Vector3.forward);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * speed);