# How do I rotate on World Axes with Quaternion.Slerp?

 0 When I rotate my object using this script... ``````function RotateObject (thisTransform : Transform, degrees : Vector3, seconds : float) { if (rotatingNew) return; rotatingNew = true; var startRotation = thisTransform.rotation; var endRotation = thisTransform.rotation * Quaternion.Euler(degrees); var t = 0.0; var rate = 1.0/seconds; while (t < 1.0) { t += Time.deltaTime * rate; thisTransform.rotation = Quaternion.Slerp(startRotation, endRotation, t); yield; } rotatingNew = false; } `````` ...the object rotates on it's local axes instead of the world axes. What is a fairly simple way to get this to rotate on World Axes? Thanks in Advance =) more ▼ asked Jan 09 '11 at 02:37 AM Heratitan 314 ● 20 ● 22 ● 29 Oct 26 '11 at 04:33 PM Cawas add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users

 0 Try changing this: ``````var endRotation = thisTransform.rotation * Quaternion.Euler(degrees); `````` To this: ``````var endRotation = Quaternion.Euler(degrees) * thisTransform.rotation; `````` more ▼ answered Jan 09 '11 at 04:05 AM Jesse Anders 7.3k ● 7 ● 17 ● 48 Thank You! This was much simpler than I thought it would be. Jan 09 '11 at 04:36 AM Heratitan Could you explain what is the difference between these 2 orders? May 10 at 08:58 PM toum add new comment (comments are locked) 10|3000 characters needed characters left ▼ Viewable by all users
 0 After lots of testing, the pins remain in place, but following the combination of rotation is complete, the cube undergoes some rotation along the Y axis that is manipulating the "wheel" of rotation Z or Y. And I can not understand where the problem. Here is the code used .. ``````void Update () { if(switchControl == true && curTarget != null){ if(curTarget.name == "RedR" || curTarget.name == "GreenR" || curTarget.name == "BlueR"){ Quaternion curPlanchTargetRot = Quaternion.Euler(angles); curPlanche.transform.rotation = Quaternion.Slerp(curPlanche.transform.rotation, curPlanchTargetRot, 10f*Time.deltaTime); } } void onMouseRotateDrag () { float posInitX = initMousePosX;//position du curseur au moment du clic float posInitY = initMousePosY; float posCurX = Input.mousePosition.x;//position du curseur pendant le drag float posCurY = Input.mousePosition.y; differenceX = Mathf.Floor((posCurX-posInitX)/150); differenceY = Mathf.Floor((posCurY-posInitY)/150); curDifference = differenceX; if(Mathf.Abs(curDifference)

By Email:

Topics:

x725
x441
x117
x109
x30

asked: Jan 09 '11 at 02:37 AM

Seen: 1831 times

Last Updated: May 10 at 08:58 PM