Comments and answers for "Return object to position"
http://answers.unity.com/questions/276706/return-object-to-position.html
The latest comments and answers for the question "Return object to position"Answer by franktrog
http://answers.unity.com/answers/278129/view.html
Well I figured out my issue. In the first part of the Slerp I was forgetting to identify which object to use for the "from" transform.rotation point. Here is the final code.
if(iFocusB){
camTrigger = 1;
}
if(iFocusRB){
camTrigger = 2;
}
if(iFocusTB){
camTrigger = 3;
}
if(Input.GetMouseButton(0)){
camObj.transform.Rotate(Vector3(Input.GetAxis("Mouse Y"), 0, Input.GetAxis("Mouse X")) * Time.deltaTime * speed);
}
if(camTrigger == 1){//Triggers when iFocusB is pushed
camObj.transform.rotation = Quaternion.Slerp(camObj.transform.rotation, Quaternion.Euler(92,-50,0), Time.deltaTime*smooth);;
if(camObj.transform.rotation == Quaternion.Euler(92,-50,0)) camTrigger = 0;
}else if(camTrigger == 2){//Triggers when iFocusRB is pushed
camObj.transform.rotation = Quaternion.Slerp(camObj.transform.rotation, Quaternion.Euler(90,90,0), Time.deltaTime*smooth);;
if(camObj.transform.rotation == Quaternion.Euler(90,90,0)) camTrigger = 0;
}else if(camTrigger == 3){//Triggers when iFocusTB is pushed
camObj.transform.rotation = Quaternion.Slerp(camObj.transform.rotation, Quaternion.Euler(20,15,92), Time.deltaTime*smooth);;
if(camObj.transform.rotation == Quaternion.Euler(20,15,92)) camTrigger = 0;
}
Thanks for the help everyone!Mon, 02 Jul 2012 22:45:22 GMTfranktrogComment by franktrog on franktrog's answer
http://answers.unity.com/comments/277513/view.html
Posted the script and it was added to the top of this page.Sun, 01 Jul 2012 13:16:44 GMTfranktrogComment by Piflik on Piflik's answer
http://answers.unity.com/comments/276763/view.html
Not sure what you do wrong, but when I use the exact same script you posted, it works.
Post the complete script, preferably formated correctly.Fri, 29 Jun 2012 18:50:35 GMTPiflikComment by franktrog on franktrog's answer
http://answers.unity.com/comments/276759/view.html
I actually stumbled upon the article for the Slerp method and tried to implement it with this code.
if(iFocusB){
focusTrigger = true;
}
if(focusTrigger == true){
camObj.transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.identity, Time.deltaTime*smooth);;
if(camObj.transform.rotation == Quaternion.identity) focusTrigger = false;
}
However focusTrigger is never set back to false even though the if statement triggers. I tested by adding a Debug.Log to the if statement.
Also the object snaps back to Quaternion.identity rather than smoothly transitioning. Any ideas why this may be?Fri, 29 Jun 2012 18:40:33 GMTfranktrogComment by franktrog on franktrog's answer
http://answers.unity.com/comments/276751/view.html
Sorry, I am new to Unity and dont really understand your answer.Fri, 29 Jun 2012 18:17:39 GMTfranktrogComment by Loius on Loius's answer
http://answers.unity.com/comments/276750/view.html
Additionally, it's unlikely that the rotation will ever be Quaternion.identity, because float precision combined with quaternion operations means you'll hit 1.0000001, which isn't 1.0, and then skip over 1.0 and hit 0.9999999 on the other side. There are some angle-comparison functions in Qauternion/Vector3 that can be used to test "if rotation is within 1 degree of identity" that will eventually exit the while.Fri, 29 Jun 2012 18:13:22 GMTLoiusAnswer by Piflik
http://answers.unity.com/answers/276749/view.html
Not sure if that helps, but I highly doubt you will ever reach Quaternion.identity this way. There are two problems: Gimbal Lock and accuracy. The former is not solvable with a fixed rotation order, the latter could be fixed by rounding...
Anyway, why don't you simply use Quaternion.Slerp?
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.identity, Time.time * speed);Fri, 29 Jun 2012 18:13:18 GMTPiflikAnswer by irrationalistic
http://answers.unity.com/answers/276747/view.html
This should really be in a coroutine with yields or in the object's Update() function. While statements execute until they are completed and don't care about frame-rate.Fri, 29 Jun 2012 18:06:39 GMTirrationalistic