I've created a script that allows me to grab a part. The arm can also be moved used Q and E. When the arm moves, the part that is being grabbed needs to stay updated with the hand but only when "z" is being pressed down (InputBegan). After input has ended the .Changed function (that keeps the part updated) is still fired, even though z is not being pressed and has been disconnected in the InputEnded function. Why is this?
local player = game:GetService('Players').LocalPlayer
local character = script.Parent
local hand1 = character:WaitForChild('Part1')
local hand2 = character:WaitForChild('Part2')
local uis = game:GetService("UserInputService")
local welds = {}
connection = nil
nection = nil
uis.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Z then
connection = hand1.Touched:Connect(function(touching)
if touching.Name == "Part" then
touching.CFrame = hand1.CFrame
nection = hand1.Changed:Connect(function()
touching.CFrame = hand1.CFrame
wait()
end)
welds[#welds + 1] = Instance.new('WeldConstraint')
welds[#welds].Parent = touching
welds[#welds].Part0 = touching
welds[#welds].Part1 = hand1
end
end)
end
end)
uis.InputEnded:Connect(function(input)
print("work1")
if input.KeyCode == Enum.KeyCode.Z then
print("work2")
if connection then
connection:Disconnect()
connection = nil
print("work3")
if nection then
nection:Disconnect()
nection = nil
print("work4")
end
end
end
--// delete all welds
for i,v in pairs(welds) do
v:Destroy()
end
welds = {}
end)
