How to rotate a defined area of 3d-space

I am building a tool in which I want to give rotational control similar to how you would use the rotation tool inside of the editor, but I want it to rotate an area so that the objects inside of the rotation area retain their coordinates.

Just to clarify, if an object is at 0,0,5 and is rotated, its coords do not change. It will move relative to things outside the area but not inside the area.

The goal is to have many objects within the area of movement. Their coordinates within the area of movement will be set when an option is selected, and the user will then be able to rotate the whole area to view to selection from any angle.

I found some info in Handles.RotationHandle in the Unity tutorials section, but I don’t understand it fully and it is also written in JavaScript and not C#.

//Create a rotation handle at (0,0,0) and rotate any object that has “RotateAtPoint.js”
// attached from 0,0,0.

@CustomEditor (RotateAtPoint)
class RotationHandleJS extends Editor {
	function OnSceneGUI () {
        target.rot = Handles.RotationHandle (target.rot,;
        if (GUI.changed)
            EditorUtility.SetDirty (target);

Any help would be appreciated. Thanks!

Even though parenting changes an object’s local coordinates, the world coordinates are still accessible:

Also, if you parent, rotate, then un-parent, the local coordinates will again be the same as the world location.

As for the center of the rotation: it’s simply the location (X,Y and Z transform) of the parent–which can simply be an empty GameObject. Create an empty GameObject at the pivot location you desire, make everything a child of that, then do your rotation.