Grab System (Using Weld) Has alot of bugs Any other good solutions?

I made a grab system Using weld But it just has so many issues i cant even count all of them Im looking for either a replacement for a weld grab system or ideas/info on how to Fix it

List of bugs i know about:

When Ragdolled after being grabbed the ragdoll bugs and the position of the ragdoll gets stuck

After the enemy dies and i grab him again i become the one getting “Grabbed”

enemy can be put through objects

enemy dies and gets launched away while grabbed

Code:

function module.Grab(Character,Enemy,Part0,Part1,C0,Time) 
	local Weld = Instance.new("Weld")
	Weld.Part0 = Character[Part0.Name]
	Weld.Part1 = Enemy[Part1.Name]
	Weld.Parent = Weld.Part0
	Weld.C0 = C0 
	Enemy.Humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
	Enemy.Humanoid.Died:Connect(function()
		Weld:Destroy()
		Enemy.Humanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, true)
	end)
	Enemy.Humanoid.AncestryChanged:Connect(function()
		Weld:Destroy()
	end)
	Character.Humanoid.Died:Connect(function()
		Weld:Destroy()
	end)
	Character.Humanoid.AncestryChanged:Connect(function()
		Weld:Destroy()
	end)
	task.delay(Time,function()
		Weld:Destroy()
	end)
end

Try creating alignposition and alignorientation, works well

create a separate collision for the raised player, so that the one holding does not touch the raised player.

Code:

											local Position = Instance.new("AlignPosition")
											Position.Parent = Humanoid
											local Orientation = Instance.new("AlignOrientation")
											Orientation.Parent = Humanoid

											local TargetAttachment = Instance.new("Attachment")
											TargetAttachment.Parent = TargetHumanoid.RootPart
											TargetAttachment.Name = "CarryAttachment"

											local PlayerAttachment = Instance.new("Attachment")
											PlayerAttachment.Parent = RightArm
											PlayerAttachment.Name = "CarryAttachment"
											PlayerAttachment.Orientation = Vector3.new(-25, -180, 155)
											PlayerAttachment.Position = Vector3.new(0, -0.5, 1)
											Position.Responsiveness = 200
											Position.MaxForce = 1e6

											Position.Attachment0 = TargetAttachment
											Position.Attachment1 = PlayerAttachment

											Orientation.Responsiveness = 200
											Orientation.MaxTorque = 1e6
											Orientation.Attachment0 = TargetAttachment
											Orientation.Attachment1 = PlayerAttachment

													TargetHumanoid.RootPart:SetNetworkOwner(Player) -- it's important

[/quote]

I might have implemented it wrong but for me it just launches the player in the air

Try making it Massless or
Use .CollisionGroup to modify the ability for the objects to collide w the player

tried both none of them seem to really work

i used a rigid constraint it fixed some of the problems but still has 2 very big problems:

  1. the player dies with the enemy
  2. when unragdolled it gets stuck like the ragdoll for 0.5 seconds (its not a issue on my end i checked)