When artists create characters, there really isn’t any standard they have to following. That means we can get into all sorts of odd issues as we import different characters. One of the most common is a character that isn’t grounded correctly.
Typically a character is setup like this:
Above, we can see that the model’s “root” is at the center of it’s feet. This is the point we’ll use to compare the character to the ground.
So, when we add the Actor Controller and Motion Controller and hit play, the character is grounded based on this point.
Every once in a while, I get a report of a character that is either floating above the ground or sunk in the ground.
This typically happens because the model’s root is not at the bottom of the feet or the character’s hip bone is not in the typical spot.
We can fix this by adding a “Body” transform between the character and it’s root bone.
In the picture below, I broke the character out of the prefab. Then, I added a “Body” transform under the character and moved the Hips, Joints, and Surface objects that make up the model under it.
By doing this, we can now adjust the “Body” transform to create offsets that we want for positioning the character. For example, we can lower or raise the character.
While the best solution is to have a character model where the root is act the position it should be, using the “Body” transform does allow you to control the positioning and tweak things.
Another advantage to having the “Body” transform (even if the character’s root is correct) is that you can rotate the body. I do this in the Swimming Motion Pack.