Another update.
I found out I can use the Animator Component to move an object with “Apply Root Motion” enabled, as long as the object’s orientation is the same as the world orientation. Let me try to explain.
Before, I had placed the book inside the bookcase but had rotated it 180 degrees around its Y-axis. I then made an animation to move the book out of the bookcase. But since the book’s orientation was now rotated 180 relative to the world orientation, I actually had to decrease it’s Z value. Since from the book’s perspective, it had to move backwards.
When you apply root motion, it adds the animation’s value to its world position. So if the animation decreases its Z-value (which it did) than it will actually now move the other way.
So what I ended up doing, was set the book’s x/y/z position and rotation to 0, create an empty parent object and moved/rotated the parent object to its desired position. Now when I animate the book, it will always move the same whether “Apply Root Motion” is enabled or not.
So that took care of that. I set the book’s “Is Kinematic” to true, animate the book and at the end of the animation set “Is Kinematic” to false again so physics/gravity takes over again.
That worked - kinda…
After I set “Is Kinematic” to true, the book behaves very, very strangely. If I move the book to a point where it’s still on the bookshelf, but with its center of gravity just over the edge and I set “Is Kinematic” to true, it starts to tip over (as it should) but then suddenly “jumps” of the shelf, landing a good 3 feet away from the bookcase. If I animate it to also rotate a bit sideways (since I want the book to land on its side), so that when physics/gravity takes over, it should rotate further, it actually does that, falls of the shelf and then drops to the floor like a feather (slow and zig-zagging). It looks funny as hell, but not what I intended.
Weight is set to 1, Drag is set to 0 and Angular Drag set to 0.05 so it should simply drop to the floor as a book…