# How to Rotate Game Object in specific Angle repeatedly on Key Press?

Ok, so I am trying to rotate an Equilateral Triangle in Y-Axis.
So basically I want this Triangle to rotate +120 degrees everytime I press the key “W” and -120 degrees every time I press the Key “S”.

Hello @manikiran22 ! Hope this helps you :

using UnityEngine;

public class FixedAngleRotator : MonoBehaviour
{
public float XAngle;
public float YAngle;
public float ZAngle;

private void Update()
{
if (Input.GetKeyDown(KeyCode.W))
transform.Rotate(XAngle, YAngle, ZAngle);
if (Input.GetKeyDown(KeyCode.S))
transform.Rotate(-XAngle, -YAngle, -ZAngle);
}
}

@manikiran22 This will do what you want nicely, I think.

using UnityEngine;
using System.Collections;

public class FixedAngleRotator : MonoBehaviour
{
public Vector3 EulerRotation = new Vector3(0f, 120f, 0f);
public float TimeToRotate = .5f;

private bool rotating;

private void Update()
{
if (!rotating)
{
if (Input.GetKeyDown(KeyCode.W))
{
StartCoroutine(doRotate(EulerRotation));
}
else if (Input.GetKeyDown(KeyCode.S))
{
StartCoroutine(doRotate(-EulerRotation));
}
}
}

private IEnumerator doRotate(Vector3 rotation)
{
Quaternion start = transform.rotation;
Quaternion destination = start * Quaternion.Euler(rotation);
float startTime = Time.time;
float percentComplete = 0f;
rotating = true;
while(percentComplete <= 1.0f)
{
percentComplete = (Time.time - startTime) / TimeToRotate;
transform.rotation = Quaternion.Slerp(start, destination, percentComplete);
yield return null;
}
rotating = false;
}

}