Rotating the parent makes the whole object move

What I want to do: have a sphere on which force is applied when W is pressed. But in order to add force forward, I have to add a parent that won’t rotate when force is added, so the parent’s axis will stay at the right place.

Also, this is like a third person view, the camera is behind the sphere.

But, if I add force to the sphere and it moves, I also have to update the parent’s position, I do like this:

transform.position = child.transform.position - child.transform.localPosition;

The problem is, when I right click I want to rotate the sphere and camera 90 degrees. I do it like this:
camera.transform.RotateAround(transform.position,new Vector3(0,1,0),-90);
transform.parent.Rotate(0,90,0);

However when I click and rotate the entire thing, the sphere moves out of the scene, without me doing anything but the rotation.

What am I doing wrong?

Sir, use this:

	public Vector3 inputDir = Vector3.zero;
	public Quaternion rotateInputDir = Quaternion.Euler(0f,0f,0f);//< initial rotation
	private Vector3 myPrevPos = Vector3.zero;

	void Start () {
		myPrevPos = transform.position;
	}

	void Update () {
		inputDir = new Vector3(Input.GetAxis("Horizontal"),0f,Input.GetAxis("Vertical"));
		rigidbody.AddForce( rotateInputDir * inputDir * 10f );
		if (Input.GetMouseButtonDown(1)) {
			rotateInputDir *= Quaternion.Euler(0f,90f,0f);
			Camera.main.transform.RotateAround( transform.position , Vector3.up , 90f );
		}
		Camera.main.transform.position += transform.position-myPrevPos;
		myPrevPos = transform.position;
	}

PS: using this don’t parent here these objects with each other