So im trying to create a part and weld it to the players root part of the player. Can someone look at this and tell me whats wrong? Theres no errors the knife just floats freely in workspace.

repeat wait(1) until game.Players.LocalPlayer

player = game.Players.LocalPlayer
character = player.Character

TorsoPart = Instance.new("Part")
TorsoPart.Name = "TorsoPart"
TorsoPart.Parent = character
TorsoPart.Size = Vector3.new(1,1,1)
TorsoPart.CFrame = character.HumanoidRootPart.CFrame
TorsoPart.Transparency = 1
TorsoPart.CanCollide = false
TorsoPart.Anchored = false

KnifePart = Instance.new("Part")
KnifePart.Name = "KnifePart"
KnifePart.Parent = character
KnifePart.Size = Vector3.new(0.6, 0.4, 2.4)
KnifePart.CFrame = TorsoPart.CFrame
KnifePart.Transparency = 0
KnifePart.CanCollide = false
KnifePart.Anchored = false

KnifeMesh = Instance.new("SpecialMesh")
KnifeMesh.Name = "KnifeMesh"
KnifeMesh.Parent = KnifePart
KnifeMesh.Scale = Vector3.new(.5,.7,.5)
KnifeMesh.MeshId = "http://www.roblox.com/asset/?id=20719463"
KnifeMesh.TextureId = "http://www.roblox.com/asset/?id=20719455"

KnifePartWeld = Instance.new("Weld")
KnifePartWeld.Name = "KnifePartWeld"
KnifePartWeld.Parent = game.Workspace
KnifePartWeld.Part0 = KnifePart
KnifePartWeld.Part1 = TorsoPart