I'm doing some sort of a planetary gravity except I don't have planets and my player object (a ball) can step anywhere. The gravity thing works great but I'm having some trouble rotating the camera properly. Now what I have is a camera parent object which position (only position) strictly duplicates the player's position. The rotation changes according to the normal of the polygon the player is stepping on. I first get the average of the normals, then I use Quaternion.FromToRotation(Vector3.up, avgNormals); to get a rotation which will point with the y away from the normal and then pass it to the camera object (a variable named correctRotation). Then in the camera object I have this: transform.rotation = Quaternion.Lerp(transform.rotation, correctRotation, Time.deltaTime*5); This thing works almost great but in some cases I get weird rotations on the Y axis with an unknown to me reason. I've showed this in the video below, because I can't really explain it better. http://www.mediafire.com/?22jja5bqb9by46g I tried different things so far and none of them had effect. My last try was to put this: transform.localRotation.y = 0; after the Quaternion.Lerp function. I guess I don't fully understand how rotations work in Unity. Can I get some assistance with this one? Thanks !