Arms not following the upper torso when changing the waist C0

Hello! I’ve been struggling on making the r15 arms move along with the camera, any help?

5 Likes

Search for terms like ‘make R15 arms follow camera’ using the search tool up top.
Post your script so we can see how you are trying to do it. Put 3 backticks (```) before and after your script when you copy/paste it here it formats properly so we can read it.

1 Like

I’ve been searching for like 2 days now and all I see is either them turning the torso along with the arms (which I already did, but for some reason, only the torso moves and the arms doesnt move along) or arms that moves for r6.

This is what i used for my torso moving script (all in client) (ignore defined variables but unused)

local Character = Player.Character or Player.CharacterAdded:Wait()

local HeadLight_ = Character:WaitForChild("HeadModel")

local camera = workspace.CurrentCamera
local remoteEvents = game.ReplicatedStorage:WaitForChild("RemoteEvents");

local Root = Character:WaitForChild("HumanoidRootPart")

local neckC0 = CFrame.new(0, .92, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1);
local waistC0 = CFrame.new(0, 0.2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1);

local LeftShoulderOG = Character:WaitForChild("LeftUpperArm"):WaitForChild("LeftShoulder").C0

local CFNew, CFAng = CFrame.new, CFrame.Angles
local asin = math.asin

local LeftShoulder : Motor6D = Character:WaitForChild("LeftUpperArm"):WaitForChild("LeftShoulder")

local function onUpdate(dt)
	
	Player:SetAttribute("Theta", math.asin(camera.CFrame.LookVector.y))

	for i, otherPlr in pairs(game:GetService("Players"):GetPlayers()) do

		if otherPlr ~= game.Players.LocalPlayer then

			local neck = otherPlr.Character.Head.Neck;
			local waist = otherPlr.Character.UpperTorso.Waist;

			neck.C0 = neck.C0:Lerp(neckC0 * CFrame.fromEulerAnglesYXZ(otherPlr:GetAttribute("Theta")*0.5, 0, 0), .5/2);
			waist.C0 = waist.C0:Lerp(waistC0 * CFrame.fromEulerAnglesYXZ(otherPlr:GetAttribute("Theta")*0.5, 0, 0), .5/2);

		end

	end
	
	for i, v in pairs(Player.Character:GetDescendants()) do
		
		if v.Name == "Ring" and v.Parent.Name == "HeadModel" then
			
			v.LocalTransparencyModifier = 0
			
		end
		
	end
		
	HeadLight_:WaitForChild("Front").CFrame = Character:WaitForChild("Head"):WaitForChild("LightAttach_").WorldCFrame * CFrame.lookAt(HeadLight_:WaitForChild("Front").CFrame.Position, camera.CFrame.Position)

end

game:GetService("RunService").RenderStepped:Connect(onUpdate);

local Theta is the number for the cframe for torso

Ill send a vid through streamables in a second

1 Like
External Media

Here is what happens

1 Like

cant you like make an ik controller and let it follow mouse position, I’ve made this before. If you would like, I can give you the model.

I’m not very familiar with IKs, I would appreciate it if you would share the model

1 Like

Weird, here is the exact script which I used:

local Player = game:GetService("Players").LocalPlayer

local Character = Player.Character or Player.CharacterAdded:Wait()

--local HeadLight_ = Character:WaitForChild("HeadModel")

local camera = workspace.CurrentCamera
--local remoteEvents = game.ReplicatedStorage:WaitForChild("RemoteEvents");

local Root = Character:WaitForChild("HumanoidRootPart")

local neckC0 = CFrame.new(0, .92, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1);
local waistC0 = CFrame.new(0, 0.2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1);

local LeftShoulderOG = Character:WaitForChild("LeftUpperArm"):WaitForChild("LeftShoulder").C0

local CFNew, CFAng = CFrame.new, CFrame.Angles
local asin = math.asin

local LeftShoulder : Motor6D = Character:WaitForChild("LeftUpperArm"):WaitForChild("LeftShoulder")

local function onUpdate(dt)
	
	Player:SetAttribute("Theta", math.asin(camera.CFrame.LookVector.y))

	for i, otherPlr in pairs(game:GetService("Players"):GetPlayers()) do

		if otherPlr == game.Players.LocalPlayer then

			local neck = otherPlr.Character.Head.Neck;
			local waist = otherPlr.Character.UpperTorso.Waist;

			neck.C0 = neck.C0:Lerp(neckC0 * CFrame.fromEulerAnglesYXZ(otherPlr:GetAttribute("Theta")*0.5, 0, 0), .5/2);
			waist.C0 = waist.C0:Lerp(waistC0 * CFrame.fromEulerAnglesYXZ(otherPlr:GetAttribute("Theta")*0.5, 0, 0), .5/2);

		end

	end
	
	for i, v in pairs(Player.Character:GetDescendants()) do
		
		if v.Name == "Ring" and v.Parent.Name == "HeadModel" then
			
			v.LocalTransparencyModifier = 0
			
		end
		
	end
		
	--HeadLight_:WaitForChild("Front").CFrame = Character:WaitForChild("Head"):WaitForChild("LightAttach_").WorldCFrame * CFrame.lookAt(HeadLight_:WaitForChild("Front").CFrame.Position, camera.CFrame.Position)

end

game:GetService("RunService").RenderStepped:Connect(onUpdate);

im guessing its something todo with your animations?

1 Like

I also figured that it’s something to do with animations, altho how and why?

1 Like

tried changing the character, same results

1 Like

try disabling the property retargeting under workspace

4 Likes

Lol, it worked! Thank you so much!

2 Likes

Now, i’ll change the title since it’s so off topic now lol

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