User Manual · v1.1

Pivot++

Custom pivots for the Unity Editor. This guide covers setup and every feature, so you can start working with custom pivots in a few minutes.

1 · Introduction

Thanks for picking up Pivot++. This guide covers setup and every feature, so you can start working with custom pivots in a few minutes.

Pivot++ is an editor-only plugin that lets you reposition the transform handles of any object right in the Scene view. Instead of being locked to the pivot baked into a mesh, you can move, rotate and scale objects around any point you choose:

  • the corner of a door,
  • the base of a lamp post,
  • the hinge of a lid.

All without re-exporting models or adding empty parent objects — and on the occasions where you do want a real parent, Pivot++ can create one for you at the exact pivot position with a single click.

Pivot++ lives in a compact panel that can sit inside the Scene view as an overlay, or be docked anywhere in your layout as its own window. It never modifies your meshes, adds no components to your GameObjects at runtime, and is stripped entirely from builds. It is a pure editor workflow tool.

1.1 · What's new in 1.1

If you are coming from version 1.0, these are the changes worth knowing about:

  • Create Parent at Pivot. Turn any offset pivot into a real empty parent, so the pivot also exists at runtime. See section 5.
  • Dockable window. Pivot++ can now be turned into an ordinary editor window and docked anywhere. Switch between the overlay and the window at any time with the button next to the On / Off toggle. See section 2.2.
  • Offsetted Transform. A new section showing the position, rotation and scale of the current shared pivot, editable by dragging the X / Y / Z labels or by typing exact values. See section 6.
  • Quick Align buttons. Four buttons at the end of every bounded axis row send the pivot to the object's own origin, or to the minimum, centre or maximum of its bounds. See section 4.2.
  • Support for more components. UI elements, colliders and layout components join MeshRenderer, SkinnedMeshRenderer and SpriteRenderer. See section 8.
  • Scale Lock fix. Version 1.0 ignored the constrain-proportions lock in Unity's Transform component, so axes could still be scaled independently while the lock was on. Pivot++ now honours it.
  • Yellow dot. The real pivot of every selected object is now permanently marked in the Scene view, so you can always see where Unity's own pivot sits.

1.2 · Key features

  • Shared Pivot. Instantly offset the handle position for the current selection, bounded or unbounded.
  • Bounded offsets. Position the pivot relative to the object's bounds, so the same settings adapt to meshes of any size.
  • Unbounded offsets. Position the pivot at an exact, fixed distance in the object's local space.
  • Quick Align. One-click alignment to the object's own origin or to any face of its bounds.
  • Offsetted Transform. Read and type the exact world position, rotation and scale of the pivot you are working around.
  • Create Parent at Pivot. Bake the offset into a real empty parent whenever you need the pivot at runtime.
  • Many pivots per object. Save as many as you need, all within reach while you work.
  • Edit Pivots mode. Move, rotate and delete saved pivots right in the Scene view.
  • Overlay or window. Keep Pivot++ in the Scene view, or dock it into your layout.
  • Non-destructive. Your meshes, prefabs and hierarchy are never altered unless you explicitly ask for a new parent.

1.3 · Requirements

  • Unity 2022.3 or newer.

2 · Getting Started

2.1 · Activating Pivot++

Unity's Overlays menu, with Pivot++ ticked under the Custom foldout.
Pivot++ sits under the Custom foldout.

Out of the box, Pivot++ is a Scene view overlay. To enable it:

  1. Focus the Scene view by clicking anywhere inside it.
  2. Press ` (the backtick key, above Tab) to open the Overlays menu.
  3. Enable Pivot++ under the Custom foldout.
  4. The Pivot++ overlay appears in the Scene view. Drag it by its header and dock or place it wherever is comfortable.
Tip

You can also open the Overlays menu from the ⋮ menu in the top-right corner of the Scene view, or via Overlays ▸ Overlay Menu. Like any Unity overlay, Pivot++ can be docked to an edge, collapsed, or left floating.

2.2 · Overlay or window

New in 1.1: Pivot++ does not have to live in the Scene view. The small button to the right of the Enabled toggle switches the panel between two homes:

  • Overlay. The panel floats inside the Scene view, exactly as it did in version 1.0.
  • Window. The panel becomes an ordinary editor window titled Pivot++, which you can dock next to the Inspector, tab behind another window, or drag onto a second monitor.

The button always shows the destination, not the current state: while the panel is an overlay it shows the docked-window glyph, and while it is a window it shows the floating-overlay glyph. One click moves the panel, and everything inside it keeps working exactly the same way in both homes.

You can also open the window directly from the menu bar: Tools ▸ Pivot++ ▸ Panel. Closing the window puts nothing back in the Scene view by itself — use the same button, or the Overlays menu, to bring the overlay back.

When to use it

The window is worth docking when you work with the Offsetted Transform fields a lot, or on a small Scene view where the overlay covers too much of your work. The overlay is the faster option for quick, occasional pivot nudges.

2.3 · First steps

The Pivot++ panel in Bounded mode: the Enabled toggle, the Bounded / Unbounded tabs, a Canvas Bounds dropdown, X, Y and Z rows, Create Parent at Pivot, the Offsetted Transform section and Add New Pivot.
The Pivot++ panel in Bounded mode.
  1. Select any GameObject with a renderer, a UI element or a collider in the Scene view or Hierarchy.
  2. Make sure the toggle at the top of the panel reads Enabled.
  3. Drag the X, Y or Z sliders in the Shared Pivot section. The move / rotate / scale handles jump to the new position immediately.
  4. Rotate or scale the object: it now pivots around the new handle position.
  5. Watch the Offsetted Transform section underneath — it reports exactly where that pivot is, and you can type into it.
Drag the sliders and the handle moves as you drag. Once it is on the hinge, the door turns on it.
Note

Disabling the toggle restores Unity's default handle behaviour at any time. Your settings are kept, so re-enabling brings you right back to where you left off.

3 · Interface Overview

The panel is organized into four areas: the master toggle, the Shared Pivot section, the Offsetted Transform section, and the Object Pivots section. Every section header is clickable and collapses its section. The numbered reference below covers every control.

The Pivot++ panel shown twice with every control numbered from 1 to 14. Left: Bounded mode. Right: Unbounded mode.
Left: Bounded mode. Right: Unbounded mode. Numbers match the table below.
#ControlDescription
1Enabled / DisabledMaster toggle. Green (Enabled) means Pivot++ is overriding the transform handles; click it to fall back to Unity's default pivot without losing your settings.
2Overlay / WindowSwitches Pivot++ between a Scene view overlay and its own dockable window. The glyph shows where a click would send the panel. See section 2.2.
3Shared Pivot sectionA quick, selection-wide pivot offset. Applies to whatever is currently selected and is shared across all objects. See section 4.
4Bounded / UnboundedChooses how the offset is expressed: relative to the object's bounds (−1 to 1), or as an exact distance in its local space.
5Canvas BoundsAffects UI and layout objects only. Chooses whether their bounds come from the RectTransform's own rect, or from the layout element's preferred or minimum size. See section 4.4.
6Bounded X / Y / ZPosition of the shared pivot within the bounds on each axis. −1 is one face of the bounds, 0 is the centre, 1 is the opposite face. Drag the slider or type an exact value.
7Quick Align buttonsFour one-click destinations per axis: the object's own origin (the yellow button), then the minimum, centre and maximum of the bounds. See section 4.2.
8Create Parent at PivotCreates an empty GameObject at the shared pivot and moves the selection into it, so the offset pivot exists at runtime too. See section 5.
9Offsetted Transform sectionThe live position, rotation and scale of the current shared pivot — and an editable one. See section 6.
10Position / Rotation / ScaleType exact values, or drag the X / Y / Z labels to fine-tune them. Every edit is applied around the offset pivot, not the object's own.
11Object Pivots sectionPer-object saved pivots. Create any number of custom pivots stored on the selected object. See section 7.
12Add New PivotSaves the current Shared Pivot position as a new permanent pivot on the selected object.
13Unbounded X / Y / ZExact local-space offset of the shared pivot from the object's centre, in scene units. Unbounded mode only.
14Use Object ScaleUnbounded mode only. When ticked, the offset is multiplied by the object's scale; when unticked, it is an absolute world-distance offset.
Note

Once the selected object carries at least one saved pivot, the Object Pivots section grows two more controls: a counter badge (e.g. 2 PIVOTS) and the Default / Edit Pivots toggle. Both are covered in section 7.

4 · The Shared Pivot

The Shared Pivot is the fast way to work: one offset, applied to whatever you have selected. It is called shared because the same offset carries from object to object as your selection changes. Great for repeat tasks like rotating a batch of doors around their hinges or scaling props from their base.

The Shared Pivot has two modes, chosen with the Bounded / Unbounded tab at the top of the section.

4.1 · Bounded offsets

The Pivot++ panel in Bounded mode, with a slider, a numeric field and four Quick Align buttons on each of the X, Y and Z rows.
Bounded mode. Normalized sliders from −1 to 1.

Bounded mode (the default) positions the pivot relative to the bounds of the object. Each axis is a normalized slider from −1 to 1:

  • −1 places the pivot at one end of the object on that axis.
  • 0 places the pivot at the centre of the object.
  • 1 places the pivot at the opposite end, whatever the object's actual size.

Because the values are proportional, the same setting adapts to every object. Set Y = −1 and the pivot sits at the bottom of a pebble and at the bottom of a skyscraper alike. Switch your selection between differently-sized objects and watch the pivot re-adjust itself automatically.

Next to each slider is a numeric field, so you can also type an exact value instead of dragging.

When to use it

Bounded mode is ideal when you think in terms of the object's shape: “the base”, “the top-left corner”, “the left edge”. It is the recommended mode for day-to-day level design.

4.2 · Quick Align buttons

New in 1.1: the four small buttons at the end of every bounded axis row are shortcuts to the positions you reach for most often. Each one only affects its own axis, so you can mix and match them freely.

ButtonWhat it does
Yellow dotMoves the pivot onto the object's own origin on this axis — the same point the yellow dot marks in the Scene view. Use it to line the handle back up with Unity's original pivot on one axis while keeping your offset on the others.
MinimumSends the pivot to the minimum edge of the bounds on this axis (slider value −1). Its glyph is a dot at the near end of a short track.
CentreSends the pivot to the centre of the bounds on this axis (slider value 0).
MaximumSends the pivot to the maximum edge of the bounds on this axis (slider value 1).
Note

The yellow button greys out when the object's own origin sits outside its bounds on that axis — a bounded slider simply cannot reach it. Hover the button to see the reason, and switch to Unbounded mode if you need to get there.

4.3 · Unbounded offsets

The Pivot++ panel in Unbounded mode, with exact X, Y and Z value fields and the Use Object Scale checkbox.
Unbounded mode. Exact local-space values.

Unbounded mode places the pivot at a fixed distance in the object's local space, measured from the object's centre. Enter exact values into the X, Y and Z fields with no limits. You can place the pivot far outside the mesh if you need to, say to orbit a moon around a planet.

You can also drag the coloured X, Y and Z labels left and right to scrub a value instead of typing it.

Use Object Scale toggle

  • Ticked: the offset is multiplied by the object's local scale. An offset of 1 on a stretched object moves further on the stretched axis, keeping the pivot consistent with the object's proportions.
  • Unticked: the offset is an absolute distance, unaffected by the object's scale.
When to use it

Unbounded mode shines when you need precision or points outside the mesh: rotating around a world landmark, offsetting by an exact number of units, or matching a measurement from your DCC tool.

4.4 · Canvas Bounds

The Canvas Bounds dropdown only matters for UI and layout objects, which can be measured in more than one way. It decides which of those measurements Pivot++ treats as the object's bounds:

  • Rect Transform — the RectTransform's own laid-out rect. This is the default, and it matches what you see on screen.
  • Preferred — the layout element's preferred size, as reported by its layout component.
  • Minimum — the layout element's minimum size.

The setting is global rather than per-object, and changing it immediately re-measures everything. For 3D objects, colliders and sprites it has no effect at all.

5 · Create Parent at Pivot

An offset pivot is an editor convenience: it changes where the handles are drawn, not the object itself. That is exactly what you want while blocking out a level — but as soon as you need to animate, tween or script a rotation around that point, the offset has to become something the runtime can see.

Create Parent at Pivot is that bridge. It creates an empty GameObject at the shared pivot's exact position and rotation, and moves your selection inside it. Rotating or scaling the new parent now does exactly what the Pivot++ handle did.

  1. Position the shared pivot where you want it, using the sliders, fields or Quick Align buttons.
  2. Click Create Parent at Pivot at the bottom of the Shared Pivot section.
  3. A new GameObject named New Parent appears at that exact spot, with your selection parented under it.

The operation is a single undo step, so Ctrl + Z puts the hierarchy back the way it was.

5.1 · Several objects at once

The action works on multi-selections too. Objects that already share a parent are gathered into one new parent; objects living under different parents each get their own, so nothing is yanked out of its branch of the hierarchy.

5.2 · Prefabs

Re-parenting inside a prefab instance is not something a tool should do behind your back. When the selection belongs to one, Pivot++ stops and asks what you would prefer — unpacking the instance, opening the prefab and doing it there, or placing the new parent above the prefab root. Cancelling leaves everything untouched.

Note

The button greys out instead of disappearing when the action cannot run — for example with nothing selected, with objects spread over several scenes, or with a non-editable object. Hover it to read exactly why.

Tip

The same action is available for every saved pivot on an object, from the blue + button in Edit Pivots mode. See section 7.3.

6 · The Offsetted Transform

New in 1.1, the Offsetted Transform section is a Transform inspector for the pivot you are actually working around, rather than for the object's own origin. It always shows three rows:

RowWhat it shows, and what typing into it does
PositionThe world position of the shared pivot. Typing here moves the selection so the pivot lands exactly on those coordinates.
RotationThe world rotation of the active object, in degrees. Typing here rotates the selection around the offset pivot.
ScaleThe local scale of the active object. Typing here scales the selection around the offset pivot.

Values are pushed live as you drag handles in the Scene view, so the section doubles as a readout: park the pivot on a corner and you can simply read off where that corner is in world space.

6.1 · Dragging the labels

Every row carries coloured X, Y and Z labels. Click and drag one left or right to scrub that value — a much faster way to fine-tune a placement than typing, and it works on all three rows. Typed values are committed when you press Enter or leave the field, so a half-finished number never moves anything.

6.2 · Scale lock

Version 1.0 ignored the constrain-proportions lock — the chain-link button next to Scale in Unity's Transform component — which let you scale axes independently even while the lock was on. This is fixed: with the lock enabled, the Scale tool and the Scale row both keep all three axes in proportion, exactly as Unity's own handles do.

Note

Like Unity's own combined Transform tool, the scale lock is deliberately ignored while that tool is active. Switch to the Scale tool to work with the lock.

7 · Object Pivots

The Object Pivots section once an object carries saved pivots: a 2 PIVOTS counter badge and the Default / Edit Pivots toggle above Add New Pivot.
With saved pivots, the section grows a counter and the Default / Edit Pivots toggle.

While the Shared Pivot is a single, selection-wide offset, Object Pivots are permanently available on a specific object. An object can hold any number of such pivots:

  • A door can have a pivot on each hinge.
  • An L-shaped prop can have a pivot on every corner.

…and you can switch between them as you work.

An L-shaped mesh in the Scene view with two saved pivots, the Pivot++ panel showing a 2 PIVOTS counter, and a yellow dot marking the object's real pivot.
An L-shaped mesh with two saved pivots. Note the counter in the Object Pivots section, and the yellow dot marking the object's real pivot.

7.1 · Adding a new pivot

  1. Using the Shared Pivot controls, position the pivot exactly where you want the new saved pivot to be.
  2. Click the + Add New Pivot button at the bottom of the panel.
  3. A new pivot is created exactly where the shared pivot is, and the button briefly confirms the coordinates it used.
Important

The new pivot sits exactly where the shared pivot is. That gives you precise placement, but it can throw you off at first: the new handle and the shared pivot handle overlap perfectly, so it looks like nothing happened.

The counter badge in the Object Pivots section tells you how many extra pivots the object has alongside the Shared Pivot. Repeat the steps to add as many pivots as the object needs.

7.2 · Edit Pivots mode

Edit Pivots mode: each saved pivot shows move and rotate handles, a red delete button and a blue create-parent button, while the rest of the panel collapses to a 3 PIVOTS counter and the Default / Edit Pivots toggle.
Edit Pivots mode. Each saved pivot shows move / rotate handles, a delete button and a create-parent button.

Click the Edit Pivots button to enter editing mode. Every saved pivot on the object is drawn in the Scene view with its own gizmo, and the rest of the panel collapses out of the way so nothing competes with what you are editing:

  • Move. Drag a pivot's position arrows to relocate it.
  • Rotate. Drag the rotation rings to orient the pivot.
  • Delete. Click the red ✕ button next to a pivot to remove it from the object.
  • Create Parent. Click the blue + button to turn that pivot into a real empty parent — see section 7.3.

When you are done, click Default to leave editing mode and return to normal handle control. Deleting the last pivot drops the object back to Default mode on its own.

Pro tips

1. Use the Global / Local toggle at the top-left of the Scene view to properly place & orient these pivots.
2. Edit mode supports Undo with Ctrl + Z.
3. Saved pivots stick through sessions. Set up once and reuse them forever.

7.3 · A parent from a saved pivot

The blue + button beside every pivot in Edit Pivots mode is the per-pivot version of Create Parent at Pivot. It creates an empty GameObject at that saved pivot's position and rotation, and moves the object inside it.

This is the quickest route from “I marked the hinge months ago” to “the door now rotates around the hinge at runtime”: set your pivots up once, and bake whichever of them you need into real transforms whenever a scene, animation or script calls for it.

The button follows the same rules as the one in the Shared Pivot section: it greys out when the action cannot run, with the reason in its tooltip, and prefab instances are asked about rather than silently modified.

8 · Supported Components

Pivot++ needs to know how big an object is before it can place a pivot on its bounds. Version 1.1 widens that considerably — UI elements, colliders and layout components now work alongside the renderers supported in 1.0:

ComponentBounds are taken fromSince
MeshFilter / MeshRendererThe shared mesh's bounds.1.0
SkinnedMeshRendererThe shared mesh's bounds.1.0
SpriteRendererThe sprite's bounds.1.0
TextMeshPro textThe text object's laid-out rect.1.1
Legacy UI TextThe text object's laid-out rect.1.1
Layout componentsThe layout element's rect, preferred size or minimum size, depending on the Canvas Bounds setting.1.1
RectTransformThe rect itself — the fallback for any other UI element.1.1
Collider (3D)Box, Sphere, Capsule and Mesh colliders.1.1
Collider2DBox, Circle and Capsule 2D colliders.1.1

Bounds are gathered from the selected object and all of its children, so a prop assembled from a dozen meshes is measured as one shape. Where an object carries several of these components, the first match in the order above wins.

9 · Tips & Troubleshooting

9.1 · Workflow tips

  • Dock the overlay to an edge of the Scene view to keep it out of the way; collapse any section from its header when you need the space.
  • Switch to Window mode when you are working with exact numbers — a docked panel next to the Inspector gives the Offsetted Transform fields room to breathe.
  • Use Bounded mode for shape-relative work (bases, corners, edges) and Unbounded mode for exact distances or pivots outside the mesh.
  • Reach for the Quick Align buttons before touching a slider: “bottom of the object” is one click, not a drag.
  • Keep the master toggle on Enabled and set the sliders to 0 when you want the original pivot. Or click the toggle to turn Pivot++ off entirely.
  • When an offset turns out to be permanent, use Create Parent at Pivot rather than rebuilding the hierarchy by hand.

9.2 · Common questions

The panel says “No object selected.”
Pivot++ needs an active selection to work with. Select a GameObject in the Scene view or Hierarchy and the controls will appear.

The panel says “Selected object does not have any component to draw bounds from.”
Pivot++ works on objects that have a measurable shape — meshes, sprites, text, UI elements and colliders (see section 8). If neither the GameObject nor any of its children carries one of those, there is no “top-right” or “bottom-left” corner to go to, and Pivot++ shows you Unity's default handles instead.

The panel says “The current tool is not supported.”
Pivot++ overrides the Move, Rotate, Scale and Transform tools. Any other tool — Rect, a custom editor tool, or the View tool — is left alone. Pick one of the four and the controls come back.

I can't find Pivot++ in the Overlays menu.
Make sure the Scene view is focused when you press `, and look under the Custom foldout of the Overlays menu. If it is still missing, confirm the plugin imported without console errors and that you are on Unity 2022.3 or newer. You can also open the panel as a window from Tools ▸ Pivot++ ▸ Panel.

Pivot++ is not visible, even after I enabled it in the Overlays menu.
Two things to check. First, Unity lets you disable all overlays for a Scene view: open the Overlays menu (focus the Scene view and press `) and make sure the Enable Overlays toggle at the top is ticked. Second, the panel may simply be in Window mode — it can only live in one home at a time. Look for a Pivot++ tab in your layout, or open it from Tools ▸ Pivot++ ▸ Panel and use the button next to the toggle to send it back to the Scene view.

The handles don't move when I change the sliders.
The sliders only affect the Shared Pivot, not the object's saved pivots. If the handle doesn't react, you may be looking at one of the saved pivots while the shared pivot is elsewhere.

There is a yellow dot on my object.
That is the object's real pivot — where Unity would put the handles without Pivot++. It is drawn for every selected object so the difference between the two is always visible; it is purely a marker and never takes a click. The yellow Quick Align button on each axis sends the handle back to it.

My object scales on all three axes at once.
The constrain-proportions lock in the Transform component is on. Version 1.1 honours it, where 1.0 did not. Click the chain-link button next to Scale in the Inspector to unlock it.

Do saved pivots exist at runtime?
Not by themselves — they are editor data, and nothing about them ships in a build. When you need a pivot in play mode, use Create Parent at Pivot (section 5) or the blue + button in Edit Pivots mode to turn it into a real GameObject.

Does Pivot++ change my mesh or add components?
No. Pivot++ only overrides where the editor draws and applies the transform handles. Your mesh assets, import settings and runtime data are untouched. The one action that does change your scene, Create Parent at Pivot, only ever runs when you click it, and is a single undo away.

10 · Support

If you run into a problem, have a feature request, or just want to share what you have built with it, we would love to hear from you.

Contact

Email: itsdevlogger@gmail.com

When reporting an issue, please include your Unity version and the plugin version (1.1). If you can, add a screenshot or short clip of the problem. It helps us get you a fix much faster.

Happy pivoting!