Hello! I was wondering how I could make a tool be equipped by holding down a key and unequipped by letting go of it.
I'm assuming to make the holding down part to use UserInputService But I can't think of a way to make the tool equip and unequip by doing this.
Thanks!
-- Vars: General local player = game.Players.LocalPlayer local character = player.Character if not character or not character.Parent then -- It attempted to index nil, so I added this to check character = player.CharacterAdded:Wait() end local humanoid = character:FindFirstChildOfClass("Humanoid") -- Vars: Input local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local desiredKey = Enum.KeyCode.E local function keyIsDown() -- Returns if the key is down or not return UserInputService:IsKeyDown(desiredKey) end -- Vars: Tool local tool = player.Backpack:WaitForChild("HoldTool") -- Replace with tool name local handle = tool.Handle local isHeld = false; -- Functions local function equipTool() if keyIsDown() then if isHeld == false then humanoid:EquipTool(tool) else if isHeld == true then return end end else humanoid:UnequipTools() end end RunService.Heartbeat:Connect(equipTool)
I have no idea if this is the most optimal, but it works for me. It uses a combination of RunService and UserInput.
Every heartbeat, it checks if the key is down, and if it is, equip it. I did a check if it was held in fear that it might look weird if you kept equipping the tool over and over again.