Rotating An Object On Its Axis Once

I can’t seem to find out how to do this just right. My basic idea is that there is a lever that, when the key “e” is pressed, will rotate to give it the effect that it is activated. This is a 2D game, so the lever is a plane. I have a custom pivot point at the middle-bottom of the plane.

How can I rotate the object JUST to the left one time when the “e” key is pressed? I have tried multiple different options, but they all cause the plane to go in strange directions. The only one that has worked so far is:

 function Update () {

      if (Input.GetKey ("e") {

           transform.Rotate (0, 45, 0 * Time.deltaTime, Space.World);

      }

 }

This did rotate the object gradually in the right direction as the “e” key was held, but this isn’t exactly the effect I’m going for. I want an automatic rotation, which will stop at a certain angle.

Any ideas? Help is greatly appreciated.

-myjean17

EDIT******************************************************

Well, I haven’t exactly solved my problem. So if anyone still wants to answer this question please do.
But I instead created an animation for the lever turning on and off, and tied them together and its actually functioning quite well.

float rotationleft = 360;
float rotationspeed = 10;

void Update()
{
    float rotation = rotationspeed * Time.deltaTime;

    {
        rotationleft-=rotation;
    }
    else
    {
        rotation = rotationleft;
        rotationleft = 0;
    }
    transform.Rotate(0,0,rotation);
}

Use Quaternion.Euler() to control rotation.

private var startRotY: float = 0;
private var endRotY: float = 0;
var currentRotY: float;

function Update ()
{

  if (Input.GetKey ("e") )
  {
		currentRotY = 0;
		startRotY = 0;
		endRotY = 45;
		transform.rotation = Quaternion.Euler(0,0 ,0);
  }
  
  currentRotY++;
  currentRotY = Mathf.Clamp(currentRotY,startRotY,endRotY);
  transform.rotation = Quaternion.Euler(0,currentRotY ,0);

}

This should work correctly. It turns an object one time (and only one time) 90 degrees on the Z axis.

using UnityEngine;
usingSystem.Collections;

public class RotateHalt : MonoBehaviour
{
    bool turn;
    
    if (Input.GetKeyDown(KeyCode.Q)) {
    			turn = true;
    			if(turn == true)
    			{
    			Vector3 rotation = new Vector3(0, 0, 90);
    			transform.Rotate (rotation);
    			}
    			turn = false;
    		}
}