- Home /
Setting world rotation in a Quaternion
I have a world angle that I want to set on an object each frame. Its only on the x Axis and needs to be set, not slowly rotated towards.
I have
public float mActualTargetFacing;
That I want to rotate a fixed amount around Vector3.forward and apply
Quaternion cameraFacing = Vector3.forward;
I want to stay away from setting them with euler angles. Thanks
really you should use Euler angles as a beginner. Never touch quaternions. Your assignment is quite wrong -- search "quaternion" on here for a zillions examples or unityGE$$anonymous$$S.com for many articles on it
Answer by Owen-Reynolds · Apr 10, 2013 at 01:44 PM
Use the rotation handles to spin something around -- try local and global -- and you'll see that rotating one often changes them all. That means "set just the x axis" is a lot harder than it sounds.
One easy way to rotate things is to compute a point and aim that way. You may not know the exact angle, but often it turns out you didn't really care. To look forwards, about 30 degrees up and a little left:
Vector3 lookOffset = new Vector3(-0.1f, 0.5f, 1); // "line" of new forward
transform.rotation = Quaternion.LookDirection(lookOffset); // turn into a rotation
If you ran that in successive frames, while changing only the Y value, the camera would keep it's "forwards and slightly left" direction, while tilting on X.
If you do know exact angles, can aim "forwards, a little left and tilting up/down" with: transform.rotation = Quaternion.Euler(xAngle, -5, 0);
Your answer
