Players Long Legs don't attach with other parts of the body and hair/hats are floating. Does anyone know how to fix it?

Hello. My name is Lightningboy_7, and I am making a game called Long Legs Life for my group Lightning Studio! I published the game and it is going pretty well, but I want to make the characters better. They are supposed to have long upper and lower legs, nothing else. Here is an example of what it should look like and what I want it to:
image

Instead, characters kind of look like this, with different variations such as arms at different positions, floating parts, hair higher or lower, etc (This is actually not a bad picture considering what I have seen) :
image

I think the problem is in the scripts, which I will show below. The first one is in a block that encompasses the whole map, which does most of it, and the second one is in StarterCharacterScripts inside StarterPlayer:

local button = script.Parent


button.Touched:Connect(function(hit)
	local humanoid = hit.Parent:FindFirstChildWhichIsA('Humanoid')
	if humanoid then
		if humanoid.HipHeight > 10 then
				local body = hit.Parent
				humanoid.WalkSpeed = humanoid.WalkSpeed*2
				humanoid.JumpHeight = humanoid.JumpHeight*2
				body.LowerTorso.Size = body.LowerTorso.OriginalSize.Value
				body.LeftFoot.Size = body.LeftFoot.OriginalSize.Value
				body.LeftHand.Size = body.LeftHand.OriginalSize.Value
				body.LeftLowerArm.Size = body.LeftLowerArm.OriginalSize.Value
				body.LeftUpperArm.Size = body.LeftUpperArm.OriginalSize.Value
				body.RightFoot.Size = body.RightFoot.OriginalSize.Value
				body.RightHand.Size = body.RightHand.OriginalSize.Value
				body.RightLowerArm.Size = body.RightLowerArm.OriginalSize.Value
				body.RightUpperArm.Size = body.RightUpperArm.OriginalSize.Value
				body.UpperTorso.Size = body.UpperTorso.OriginalSize.Value
				body.Head.Size = body.Head.OriginalSize.Value
				body.HumanoidRootPart.Size = body.HumanoidRootPart.OriginalSize.Value
				body.UpperTorso.Position = body.LowerTorso.Position + Vector3.new(0, body.UpperTorso.Size.Y/2, 0)
				body.Head.Position = body.UpperTorso.Position + Vector3.new(-body.Head.Size.X/15, body.Head.Size.Y + body.Head.Size.Y/3, body.Head.Size.Z/3)
				body.LeftUpperArm.Position = body.UpperTorso.Position + Vector3.new(-body.LeftUpperArm.Size.X/2, body.LeftUpperArm.Size.Y/5, -body.LeftUpperArm.Size.Z/2)
				body.LeftLowerArm.Position = body.LeftUpperArm.Position + Vector3.new(0, -body.LeftLowerArm.Size.Y/1.5, body.LeftLowerArm.Size.Z)
				body.LeftHand.Position = body.LeftLowerArm.Position + Vector3.new(0, -body.LeftHand.Size.Y*2, 0)
				body.RightUpperArm.Position = body.LeftUpperArm.Position + Vector3.new(body.RightUpperArm.Size.X*1.5, 0, -body.RightUpperArm.Size.Z/2)
				body.RightLowerArm.Position = body.LeftLowerArm.Position + Vector3.new(body.RightLowerArm.Size.X*1.5, 0, body.RightLowerArm.Size.Z/1.5)
				body.RightHand.Position = body.RightLowerArm.Position + Vector3.new(0, -body.RightHand.Size.Y*2, 0)
				body.HumanoidRootPart.Position = body.HumanoidRootPart.Position + Vector3.new(0, -4.5, 0)
				body.Animate.ScaleDampeningPercent.Value = 2.5
				humanoid.HipHeight = 10
		end
	end
end)
local humanoid = script.Parent.Humanoid
local person = script.Parent

humanoid.BodyHeightScale.Value = humanoid.BodyHeightScale.Value*6

I am not sure if you would have to weld the parts together or something, but I would like this done because it would definitely improve the game. Thank you!

Use Motor6Ds. These are the “joint” that default roblox character use. They can be animated later as well. You will need to do that math to figure out the exacts for your characters, but change the offset properties (C0 and C1) such that are the point at which you want rotation of the joints to occur.

Since I have never altered Motor6Ds before, and the tutorials aren’t any help, could you provide something like an example? Like how it would help the upper left arm stay at the right place and right by the torso?