I'm welding a part on to the player character's torso:
script.Parent.Touched:connect(function(part)
local player = game.Players:GetPlayerFromCharacter(part.Parent)
if player then
script.Parent.Parent = player.Character.Torso
script.Parent.Anchored = false
local weld = Instance.new("Weld", player.Character.Torso)
weld.Part0 = player.Character.Torso
weld.C0 = player.Character.Torso.CFrame
weld.Part1 = script.Parent
weld.C1 = script.Parent.CFrame
script.Disabled = true
end
end)
It works but the part ends up under the player But when I try to move the part's CFrame to a different location on the player:
script.Parent.Touched:connect(function(part)
local player = game.Players:GetPlayerFromCharacter(part.Parent)
if player then
script.Parent.CFrame = player.Character.Torso.CFrame * CFrame.new(0, 30, 0)
script.Parent.Parent = player.Character.Torso
script.Parent.Anchored = false
local weld = Instance.new("Weld", player.Character.Torso)
weld.Part0 = player.Character.Torso
weld.C0 = player.Character.Torso.CFrame
weld.Part1 = script.Parent
weld.C1 = script.Parent.CFrame
script.Disabled = true
end
end)
All it does is move the player up and not change the CFrame of the part.

1 comment
Don't set the C0 and C1 values. However,if you wanted to weld the part to the torso and still keep its relative CFrame, you put: weld.C0 = player.Character.Torso.CFrame:inverse() * script.Parent.CFrame