Quaternion.AngleAxis setting other axis to Zero

I have an object with the x angle rotated about 55 degree facing up. I want that x angle to keep at 55 but the Quaternion.AngleAxis keeps resetting it to 0 while rotating the object on its Z axis. how would I change the code to fit this so the object can have a static x rotation of 55 while the object can rotate on its z axis?

Here is a video: http://www.screencast.com/t/NWYwODYyZjE

pay attention to where the z axis is pointing at the beginning then notice how it zeros out when it starts to rotate.

Quaternion.AngleAxis doesn't modify an existing rotation, it creates a new rotation.

If you want to rotate by the rotation created by Quaternion.AngleAxis, you can do it by multiplying the new rotation on the left side of the existing one:

myRotation = Quaternion.AngleAxis(myAngle, myAxis) * myRotation;

I highly recommend that you use the Transform functions "Rotate" and "RotateAround" instead of modifying the Quaternion directly. You will save yourself a lot of headaches.

// when instantiating or starting your game object, start with

myGameObject.transform.Rotate(Vector3.forward,55); // may need to use -55 instead.

// then during runtime, only allow rotations such as:

float degreesAngle = 5;// or any number you choose.

myGameObject.transform.Rotate(Vector3.up,degreesAngle);