Ragdoll Problems

Roblox is notorious for making changing collisions on body parts really difficult.

The way I fixed this is by going through each limb in the character and creating a smaller replica and welding it to its corresponding body part and using that as the collider instead of the actual limb. It’s a little jank but so far is the only way I’ve seen to do limb physics properly.

for _,v in pairs(char:GetChildren()) do --For i,v loop to go through all the objects in the char
	if v:IsA("MeshPart") then --Find all parts which are limbs since all limbs are meshes
		print(v) --Debugging
         --Create the part
		local CollisionPart = Instance.new("Part")
		CollisionPart.Parent = v
		CollisionPart.CFrame = v.CFrame 
		CollisionPart.Size = v.Size/2 --Setting the size smaller because if they're too big it acts buggy
		CollisionPart.Massless = true --Making sure we arent adding any extra weight to the character 				
		CollisionPart.Transparency = 0
		CollisionPart.Name = "COLLISION_PART"
		CollisionPart.CanCollide = false --Set to false when create, find all parts named Collision part and set collision to true when ragdoll happens
         --weld part to the corresponding body part
		local Weld = Instance.new("WeldConstraint",CollisionPart)
		Weld.Part0 = CollisionPart 
		Weld.Part1 = v 
	end
end