I am trying to create a serverscript in which it catches a remote event fired by when I press C, the sword on my back will weld onto my hand, and when I press C again, it will switch to the position it was on my back.
I can get the position of the sword just fine, but the orientation of the sword somehow fucks it up.
I was told once to use WeldConstraints, but I can only find the best tutorials online to be about normal Welds, so I just am using those at the moment.
Here is my problematic script (it may be sort of long, and I'm not sure everything in it is even necessary so hang with me, because I am not a very experienced scripter):
local blade = script.Parent.Parent.Blade local rep = game:WaitForChild("ReplicatedStorage") local press = rep:WaitForChild("Equip") local function Equip(player, weldSwordModel, EquippedValue, UpperTorso, character) if EquippedValue == false then print("caught") weldSwordModel.Parent = workspace local weld = Instance.new("Weld", workspace) weld.Part0 = blade weld.C0 = UpperTorso.CFrame:inverse() weld.Part1 = UpperTorso weld.C1 = UpperTorso.CFrame:inverse() weld.C0 = weld.C0 * CFrame.new(0, 0, 0) weld.C0 = CFrame.Angles(math.rad(-45), math.rad(90), math.rad(-90)) wait(1) EquippedValue = true end end press.OnServerEvent:Connect(Equip)
The result of pressing C is this: https://gyazo.com/a6fd00beb5784ad934d2de14ca6109aa
I'm not sure why it does this. I don't know much about CFrame and quite frankly before trying this I've never messed with CFrame, can anyone tell me what is wrong? I was told perhaps to use CFrame.lookAt instead of CFrame.Angles but everyone I talked to only knew how to use CFrame.Angles so I had no choice but to use angles. Does anyone have the slightest clue to what's going on?