If you aren’t moving the torso with physics, welds will do nothing to help you. You need to either use SetPrimaryPartCFrame, or move the torso with body movers and unanchor everything but the torso, like above.
If you want to rotate the whole player around, you should be changing the torso’s CFrame. I would recommend changing the HumanoidRootPart’s CFrame instead since then it would work for more than just R6 players. Here’s code that works like yours that should work:
local torso = script.Parent.Char.Torso
while wait(.1) do
torso.CFrame = torso.CFrame * CFrame.Angles(0,.04,0)
end
This however is the code I would most recommend that utilizes RunService and targets the characters HumanoidRootPart:
local RunService = game:GetService("RunService")
local HumanoidRootPart = script.Parent.Char.HumanoidRootPart
RunService.RenderStepped:Connect(function()
HumanoidRootPart.CFrame = HumanoidRootPart.CFrame * CFrame.Angles(0,.01,0)
end)