Smooth rotation change of a parent object without affecting child

Okay, I’m completely stumped as to how to tackle this one. I’m in the process of coding a third person game, and I’m having trouble figuring out some basic camera/movement controls.

Here’s my setup: I have a character with an empty ‘pivot’ game object in the center of teh character’s mesh. The pivot has MouseLook attached, and the main camera is a child object of the pivot–this, effectively, allows the player to move the mouse and rotate the camera around the character freely.

I have another object on the other side of the pivot, equidistant from the pivot (just like the camera). This is used for the Head Look Controller, so that the character looks where the camera is facing.

In the interest of making movement more natural (so that the character’s feet do not slide on the ground when rotation occurs), I would like it so that when the character is stationary, the camera can rotate around him freely, but when a button to move is pressed the character re-orients himself so that he is facing where the camera was looking–or more specifically, the rotation value of the pivot. Preferably, I’d like this to occur via a lerp of some kind, so that the rotation is smooth and not abrupt.

This presents two problems:

  1. Infinite lerping. If you’re constantly lerping to match the rotation of the child object, you’re going to infinitely spin in a circle, since child rotation is affected by parent rotation.
  2. Camera offsetting–If I choose to cache the rotation of the child object, then when the character orients to match this rotation, the camera is still offset and not in-line with where the character is facing. When the character is moving, the camera should stay behind the character (NO Y-axis rotation on the pivot) at all times.
  3. Possibly using quaternions. If I have to use quaternions to solve this problem, I’d like it to be the least painful method possible, because I absolutely cannot understand quaternions in Unity for the life of me.

Does anyone have any ideas on how to tackle this problem?

Managed to solve this myself via guidance from syclamoth in the comments. Detached the camera pivot, attached a script to it that locked its transform to the coordinates of the character, and now, all is well.