I’ve got a character with the root placed at the feet, but Swimming animations work best if the root is at the center of mass, so that I can rotate the Character around his center for swimming vertically.
The problem is that in transitioning between the two, the Character appears to sink abruptly.
I was considering trying to counter this movement by raising the transform the same amount that the root is moved to make the net change in position 0, but so far, I have been unsuccessful with this tactic.
After brain storming - the only two options I see are 1. swap the character out for a clone of the same character set up for swimming with the root located at com when you want to swim, or find a way to transition the change to the root. Counter animating is rarely a good option.
Just for info - you are using humanoid rig - with root motion?
A change to the rig is probably better than attempting to move the root node via a transition.
I managed to get the “Counter movement” strategy to work by saving the difference between the hip bone and the root transform in LateUpdate, and moving the transform the opposite of the change in Y position.