Changing sword position messing up player position

Hello, so i have this script that supposed to change a player sword position from the torso to the right arm

local Sword = game.ReplicatedStorage.CombatStorage.Sword:Clone()
Sword.Parent = Character
Sword.WeldConstraint.Part1 = Character.Torso
Sword.Orientation = Character.Torso.Orientation + Vector3.new(180, 0, 180)
Sword.Position = Character.Torso.Position + Vector3.new(-0.9,-1.1,0)
local Animator = Humanoid:FindFirstChildOfClass('Animator')

UserInputService.InputBegan:Connect(function(input)
	if input.KeyCode == Enum.KeyCode.E then
		if SwordOut == false then
			local TakeOut = Animator:LoadAnimation(script.CombatManager.RegularM1s.Animations.TakeOut):Play()
			wait(0.5)
			CanSlash.Value = true
			
			Sword.WeldConstraint.Part1 = Character["Right Arm"]
			Sword.Orientation = Character["Right Arm"].Orientation
			local RightPos = Character["Right Arm"].Position
			Sword.CFrame = CFrame.new(RightPos * Vector3.new(1,-0.5,-1))
			SwordOut = true
		elseif SwordOut == true then
			CanSlash.Value = false
			SwordOut = false
			
		end
		
	end
	
end)

But when i press E this happens

https://gyazo.com/8690326aa9540770676ea8cfc969c2e1

Can someone please help me? No ones responding

is your tool anchored? im unsure what the cframe is doing in the function, is it supposed to make it look like its being held? honestly looks clean though apart from the falling n stuff

Sorry for late response, i was sleeping .CFrame is supposed to set the position. and not its not anchored because the player should be able to move with the sword?

Tools automatically use welds to attach the tool to the player’s hand, you have to use ToolPosition to move the tool.

Its not a tool, so idk if i can do that

try making it massless
CHARACTER LIMIT!!!

Make sure you do not bypass the character limit please. Don’t you need to make the welds for the tools to stick to the hand?

It would make sense; however, the character seems to be r6.