How rotate a object with perfection angle and time?

I’m trying to make a puzzle object and i’m need to turn a object by 60º with 1 sec. The time don’t need exaclity, but the angle yes.

I tried with this code, spining the object with 60º per second, and the time reached 1 sec, stop, but the time don’t get 1 sec exact, and the objects get disheveled.

public class pilar : MonoBehaviour
    public GameObject obj;
    // Start is called before the first frame update
    public KeyCode acessKey = KeyCode.Mouse0;

    public bool rotate = false;
    private float time = 0f;

    // Update is called once per frame
    void Update()
        if (rotate) {
            time += Time.deltaTime;
            transform.Rotate (0,0,60*Time.deltaTime);
            if(time >= 1f) {
                rotate = false;
                time = 0f;

    void OnMouseDown()
        if(Input.GetKey(acessKey) && !rotate) {
            float distance = Vector3.Distance (obj.transform.position, gameObject.transform.position);
            if(distance < 5.0) {
                rotate = true;

Adding Time.deltaTime will never give you exactly one second. Depending on your framerate, you can jump from 0.99s to 1.023s (at 30 FPS) which will produce some differences in your rotations.

A simple solution here would be to set rotation to your desired final rotation when reaching maximum time