I'm using the following code to get prototype for moving an object around a spherical object and keeping the object perpendicular to the sphere. Code (csharp): var speed = 100.0; var planet : Transform; function Update () { var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed *-1; transform.RotateAround(Vector3(0, -512, 0), Vector3.forward, x); transform.LookAt(planet); } The result is sort of working. I see the following behavior when the object orbiting crosses the halfway point of the sphere. It rotates 180 on the z axis.
The transform.LookAt function has an optional second parameter to specify the upward direction when the object is rotated. This is the direction the object's Y axis will aim towards when its Z axis is pointing in the target direction. If you set the upward direction to be the same as the axis of rotation, you should find the object stays the same way up as it rotates.