Player's Arms/Hands? Not moving with UpperTorso with model rooted to UpperTorso

Pretty much I have a Third Person Camera script that normally works just fine that handles moving the camera and has the players Character face forward where the mouse is pointed.

I use this with shooter games and it has usually worked as I have usually attached the gun to the players right hand via Motor6D. But I decided to attach the gun to the players UpperTorso to make the animations easier(Bolt action stuff) but this seems to have broken the way the character points.

It seems like the arms or just hands aren’t moving with everything else and causes a weird effect. This works normally when the weapons are attached to the right hand. Everything is does via Roblox Animations by the way in terms of holding and shooting and such. I am not sure if I will have to reroot the model and redo the animations or if there’s just another motor I need to create or something? Any help is appreciated

When Working:

Not Working:

Here is the parts of the script that handle the characters direction and such. This is handled exactly the same way in both Gifs:

local Plr = game.Players.LocalPlayer
local ts = game:GetService("TweenService")
local UIS = game:GetService("UserInputService")
local Run = game:GetService("RunService")
local Camera = workspace.CurrentCamera
local M = Plr:GetMouse()

local char = Plr.Character
local hum = char:WaitForChild("Humanoid")
local waist = char.UpperTorso:WaitForChild("Waist")
local root = char:WaitForChild("HumanoidRootPart")

	if hum.Health > 0 then
		local LowT = char:WaitForChild("LowerTorso")
		local HighT = char:WaitForChild("UpperTorso")
		UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
		local delta = UIS:GetMouseDelta()
		local deltaX, deltaY = delta.X, -delta.Y
		Camera.CFrame =, Camera.CFrame*, deltaY, -2000).p)

		local offset = LowT.CFrame:ToWorldSpace(, HighT.Size.Y/2, 0)) * CFrame.fromEulerAnglesXYZ(math.max(math.min(math.asin((M.Hit.p - M.Origin.p).unit.y), .6), -.75), 0, 0) *, HighT.Size.Y/2, 0)
		waist.C1 = offset:inverse() * LowT.CFrame *, .8, 0)

		local tweenInfo =, Enum.EasingStyle.Sine, Enum.EasingDirection.Out, 0, false, 0)
		local newRootCF =,,0,Camera.CFrame.lookVector.Z))
		local tween = ts:Create(root, tweenInfo, {["CFrame"] = newRootCF}, true)

Try checking the root priority, and root part using part:GetRootpart().

Sometimes it changes and messes up with which parts rotate and not.

Ah, I had the same problem. Just remove the animate script from the character then it’s fixed.
(you might have to rotate the right arm by 90 degrees in the code)

HumanoidRootPart is the Root of the character when trying to look around. It seems like its the hands that aren’t moving? The arms seems to rotate still

I’m telling you; I had the exact same problem before. You just need to create a blank local script to replace “Animate”. What I did before completely replacing the script was exporting the running animation so that it did not move the arms.

The cause of this is animation weighted blend fix, and it is 100% this bug:

You also need to make sure any animations that modify the arms are set to the core priority (if any).

1 Like

Just replacing the Animate script has not worked but I will look into that farther thank you. Since you sent another post that explained disabling Retargeting and enabling RbxLegacyAnimationBlending which will fix it for now.

Edit: Only a temprary fix for Studio it seems. Online still broken. I will look into the Animate script replacement soon :face_exhaling:

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.