Anchoring/Unanchoring During Animation Causes Assembly Center Of Mass Being Incorrectly Evaluated

When playing an animation (that moves the torso) and anchoring any part of the character, if you unanchor before the animation finishes (using Animation.Ended as a reference), the character’s assembly mass becomes incorrectly calculated.
This can cause unexpected physics behavior.

Visual Aids:
streamable

Reproduction Steps:

  1. Play an animation that moves the torso.
  2. Anchor any character part (e.g., HumanoidRootPart) while the animation is still playing.
  3. Unanchor the part before Animation.Ended fires.
  4. Observe mass and physics glitches.

Reproduction Files:
Roblox Place
Test Place (59,0 КБ)

Code to Reproduce:

local player = game:GetService("Players").LocalPlayer
local animation = game:GetService("ReplicatedStorage").Animation

game:GetService("UserInputService").InputBegan:Connect(function(input, isProcessed)
	if isProcessed then return end

	if input.KeyCode == Enum.KeyCode.T then
		local rootPart = player.Character:FindFirstChild("HumanoidRootPart")
		if not rootPart then return end
		local track = player.Character:FindFirstChildWhichIsA("Animator", true):LoadAnimation(animation)
		track:Play()

		rootPart.Anchored = true
		print("Anchored state: ".. tostring(rootPart.Anchored))
		task.wait(0.5)
		rootPart.Anchored = false
		print("Anchored state: ".. tostring(rootPart.Anchored))
	end
end)

Additional Information:

  • Happens both in Studio and live games.
  • Still happens with all plugins disabled.
  • No browser or user-specific factors involved.

Expected behavior

Character’s assembly and physics behavior should remain stable after anchoring/unanchoring, regardless of animations playing.

1 Like