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.

External Media

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.

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