- Home /
Easing with Mouse Release
Hello,
I am rotating a gameobject on the Y axis when I click and hold the mouse so it keeps rotating. Here is the code I am working with.
 var rotater = 1;
 
 function Update(){
     
     if (Input.GetMouseButton(0)){
         rotater++;        
         transform.rotation = Quaternion.AngleAxis(rotater , Vector3.up);
     }
 }
What I want to happen is for the gameObject to ease out of the rotation when I release the mouse button. I've come across Quaternion.slerp or lerp, but those are for moving from A to B I believe? Not sure if I understand that function very well.
Any suggestions?
Regards
Joe
Answer by robertbu · Feb 14, 2013 at 04:31 AM
The idea is instead of doing an absolute rotation you do a relative rotation and you multiply that rotation by a factor so that it decreases each frame. If you don't care about it being deltaTime correct, you can simplify this some:
 var maxDegreesPerSecond = 30;
 var frictionFactor = 0.8;
 var stopThreshold = 1.0;
 private var degreesPerSecond = 0.0;
  
 function Update(){
 
     if (degreesPerSecond > stopThreshold) {
       transform.Rotate(Vector3(0,degreesPerSecond * Time.deltaTime,0));
       degreesPerSecond = degreesPerSecond * (1.0 - Time.deltaTime * frictionFactor);
       } 
  
     if (Input.GetMouseButton(0)){
         degreesPerSecond = maxDegreesPerSecond;
     }
 }
Answer by govi627 · Feb 14, 2013 at 04:42 PM
Relative is right, I'll give you the right answer, I did something similar with Quaternion.Slerp in end. Here is my working code which I'll give credit to snappyPants on reddits unity subreddit.
 Quaternion rotateTo;
 float speed = 5;
 float minAngle = 20;
 
 void Update () {
     if (Input.GetMouseButton(0)){
         rotateTo = transform.rotation * Quaternion.AngleAxis(minAngle, Vector3.up);
     }
     transform.rotation = Quaternion.Slerp(transform.rotation, rotateTo, Time.deltaTime * speed);
 }
Your answer
 
 
             Follow this Question
Related Questions
Directional booster 1 Answer
Mimic other object's rotation on one axis (with offset) 0 Answers
90 Degree stopping rotation on y-axis issue 0 Answers
Quaternions incorrect? 2 Answers
Rotate object smoothly problem 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                