How does weld work and why does it look like this?

How does weld work? When I try it looks like this:
image
It should look like this:
image

Code:

local skin = game.ReplicatedStorage.Objects.Skins:FindFirstChild(equippedSkin):Clone()
	skin.PrimaryPart.CFrame = char:WaitForChild("Hitbox").CFrame
	
	for _, child in pairs(skin:GetDescendants()) do
		if child:IsA("BasePart") then
			child.Name = "Head"
			child.Parent = char
			
			local weld = Instance.new("Weld")
			weld.Part0 = child
			weld.Part1 = char:WaitForChild("Hitbox")
			weld.Parent = child
			
			weld.C0 = weld.Part1.CFrame * weld.Part1.CFrame:Inverse()
			
			child.Anchored = false
		end
	end
	
	skin:Destroy()

This is because you are using a “Weld” object will set the position of Part1 to Part0. You should use a “WeldConstraint” object instead as it wont set the position itself.

This would also mean that you don’t have to set the C0 value as long as you have both objects positioned where you want them already.

Ive tried that already_______…a

You should use WeldConstraints instead of Welds, as they are a newer and more updated version of Welds.

What is it you tried? WeldConstraints or setting the C0 value? Cause if you use WeldConstraints you will only need to position the parts where you want them in relation to each other and it will held at that distance.

I forgot to mention that there is a size system, the character gets bigger. Does the distance change if they get bigger? That might be why it looks cramped in game but not when you test without any scripts.

Whenever the scale is changed, does the whole character’s size get changed proportionally? Changing the size of a single object will not change the size of the rest of the objects in the model, and the distance between objects that are welded together with a WeldConstraint will not stay the same if only the one object is scaled.

It does get sized proportionally.

i think I know how to implement it to work.

this happens https://gyazo.com/fa3c702dbf49338e3d7d6d00f4f503e0