Humanoid:ApplyDescription() breaking animations and position

Hello Developers, Nico here once again.
Today i’m here completely frustrated with this problem. (i’ve been trying to fix this since yesterday)

So basically as you can see in the footage, the rig’s position is fine before :ApplyDescription(), but right after i load the local player’s humanoid description, the rig instantly moves to another location, and the funniest thing is that the HumanoidRootPart has the same position and the only stuff that changes is the body parts position.

https://streamable.com/l4llau

Just to clarify:

  • I DON’T have any other script messing with the position & the rig.
  • It does NOT matter if i apply the description before OR after i play the animation, the product is the same.
  • The rig’s position does not change.
  • The Animation works completely fine on premade dummies/rigs.

(I’ve also tried to play the animation on the player itself and it went worse)

If any of you know how to fix this or you got any idea on what’s happening I would really appreciate it :pray:

NEW EDIT:

i’ve discovered something, the rig’s size MATTER. I confirmed this by changing my character, and testing different sizes, so for example:

20% body type:


it goes here:

90% body type:

it goes here:

So the only fix i can think of is just setting the same size for every player ¿How would i make this?
(Although i’d like to find a better way to fix this without using the same size for everyone)

Thank you and have a great day.
Greetings, Nico.

1 Like
local originalPosition = humanoidRootPart.CFrame
humanoid:ApplyDescription(humanoidDescription)
humanoidRootPart.CFrame = originalPosition

Nop, still happens. Again, it appears that the PrimaryPart’s (humanoidrootpart) position does not change, the only stuff that changes is the body parts, (arms, legs, etc…) don’t know if that helps.


Thank you tho!

Possibly give the ApplyDescription() time to completely finish.
task.wait(0.33)

nop, none of these, the thing that screws up everything is the rig type/scale.


(the avatar i have looks close to the place the rig is suposed to be because its scale/rig type)

Wish I knew more about it. Here is a hacky way that may work out.

local player = game.Players.LocalPlayer
local character = player.Character
local humanoid = character:FindFirstChildOfClass("Humanoid")
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
--------

local originalPosition = humanoidRootPart.CFrame
for _, part in ipairs(character:GetDescendants()) do
    if part:IsA("BasePart") then
        part.Anchored = true
    end
end

humanoid:ApplyDescription(humanoidDescription)
task.wait(0.1) --not sure here what would work out. 
--maybe with this you don't even need it. 
humanoidRootPart.CFrame = originalPosition

for _, part in ipairs(character:GetDescendants()) do
    if part:IsA("BasePart") then
        part.Anchored = false
    end
end

gl

Nop :smiling_face_with_tear:

Shouldn’t have to get hacky with it anyways … are you sure your description table format is right?

Sir yes sir, i guess the only think i can do as of now is re-do de animation, thank you anyway!

1 Like

I found in my case the reason was that Humanoid.HipHeight changed, and for some reason this scales animations as well.

For instance if your HipScale was 1, but after :ApplyDescription() HipScale becomes 1.1, then the effect of all animations is scaled by 10%. If for example the character would be animated to move 10 studs to the left, they instead move 11 studs to the left.

The solution is to store the HipHeight your Humanoid has before :ApplyDescription(), then revert to that HipHeight after using :ApplyDescription().