- 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