Character becomes bugged when welding

I am very new to welding, and I am trying to make grab moves using weld moves, right now im making a neck grab attack, yet whenever I activate it, after a couple seconds the character sinks:
Ive tried multiple methods including setting the dummy to massless, turning off cancollide to most of his limbs, and ive even tried using collisiongroups but it just doesnt seem to work, anybody know what to do?

--local script
local Player = game:GetService("Players").LocalPlayer

local Character = Player.Character or Player.CharacterAdded:Wait()

local Hum = Character:WaitForChild("Humanoid")

local rp = game:GetService("ReplicatedStorage")

local Grab = rp:WaitForChild("RemoteGrab2")

local UIS = game:GetService("UserInputService")

UIS.InputBegan:Connect(function(input, IsTyping)
	if IsTyping then
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
-- Server Script
local rp = game:GetService("ReplicatedStorage")

local Grab2 = rp:WaitForChild("RemoteGrab2")

local Debris = game:GetService("Debris")
local debounce = false

local PhysicsService = game:GetService('PhysicsService')

pcall(PhysicsService.RemoveCollisionGroup, PhysicsService, 'PlayerGroup')
pcall(PhysicsService.RemoveCollisionGroup, PhysicsService, 'Dummy')

	local Char = player.Character or player.CharacterAdded:Wait()
	local Hum = Char:WaitForChild("Humanoid")
	local Humrp = Char:WaitForChild("HumanoidRootPart")
	local RightH = Char
	local Folder ="Folder", Char)
	Folder.Name = player.Name.." Melee"
	Debris:AddItem(Folder, .5)
	local Hitbox = script:WaitForChild("Hitbox"):Clone()
	Hitbox.CFrame = Humrp.CFrame
	Hitbox.Parent = Folder

	local Hweld ="ManualWeld")
	Hweld.Part0 = Hitbox --thing we are trying to weld
	Hweld.Part1 = Char["HumanoidRootPart"]	--What we are welding to
	Hweld.C0 =, -4, 0) +,Char["HumanoidRootPart"].Size.Y/2,0)
	Hweld.C0 =,0,1.5) * CFrame.Angles(math.rad(0),math.rad(0),math.rad(0))
	Hweld.Parent = Hweld.Part0
		if Hit:IsA("BasePart") then
			if not Hit:IsDescendantOf(Char) then
				local EChar = Hit.Parent:FindFirstChild("Character")
				local EUpperTorso = Hit.Parent:FindFirstChild("Head")
				local EHum = Hit.Parent:FindFirstChild("Humanoid")
				local EHumrp = Hit.Parent:FindFirstChild("HumanoidRootPart")
				if EHum and EHumrp then
					if debounce == false then
						debounce = true
						PhysicsService:CollisionGroupSetCollidable('PlayerGroup', 'Dummy', false)
						PhysicsService:SetPartCollisionGroup(Humrp, 'PlayerGroup')
						PhysicsService:SetPartCollisionGroup(EHumrp, 'Dummy')
						local Animator = Char.Humanoid:FindFirstChildWhichIsA("Animator")
						local Track ="Animation")
						Track.AnimationId = "rbxassetid://8837123515"
						local Anim = Animator:LoadAnimation(Track)
						Hum.WalkSpeed = 0
						local EWeld ="ManualWeld")
						EWeld.Part0 = EUpperTorso --thing we are trying to weld
						EWeld.Part1 = Char["RightHand"]	--What we are welding to
						EWeld.C0 =, 0, 0) +,Char["RightHand"].Size.Y/2,0)
						EWeld.C0 =,-.5,0) * CFrame.Angles(-40, math.rad(180), 0)
						EWeld.Parent = EWeld.Part0
						PhysicsService:CollisionGroupSetCollidable('PlayerGroup', 'Dummy', false)
						debounce = false
						print("debounce now false")

My guess is that this is a bug having to do with the humanoid hipheight. For whatever reason the dummy’s humanoid hipheight is being adjusted over the controlled character’s. Notice how the controlled character only sinks far enough for the dummy’s feet to hit the ground…

If this intended only for use on NPC dummies then you could try removing the dummy’s humanoid object.

The dummy is only for testing, im trying to make it work on both dummys and players, maybe i could adjust the hipheight on the dummy in the script somehow?