It deals damage until the player finally dies. Then the projectile just freezes in the air. Heres the script maybe you can test it and find out it's problem :(
repeat wait() until game.Players.LocalPlayer.Character
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local camera = game.Workspace.CurrentCamera
local speed = 100
enabled = false
function shootBeam(key)
if key.KeyCode == Enum.KeyCode.F and enabled == false then
enabled = true
print("pew pew!")
local laser = Instance.new("Part", workspace)
laser.Name = "laserBeam"
laser.Anchored = false
laser.CanCollide = false
laser.Transparency = 0
laser.FormFactor = Enum.FormFactor.Custom
laser.Material = Enum.Material.Neon
laser.BrickColor = BrickColor.new("Lime green")
laser.Size = Vector3.new(0.5, 0.5, 2)
laser.CFrame = player.Character.Torso.CFrame *CFrame.new(0, 1.5, -2.5)
local bodyvelocity = Instance.new("BodyVelocity", laser)
bodyvelocity.velocity = player.Character.Torso.CFrame.lookVector * speed
local debounce = false
laser.Touched:connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") ~= nil and debounce == false then
debounce = true
hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - 15
wait(2)
debounce = false
end
end)
game:GetService("Debris"):AddItem(laser, 2)
wait(1)
enabled = false
end
end
game:GetService("UserInputService").InputBegan:connect(shootBeam)

4 comments
This really bugs me cause I've tried everything. It even does that without the Touched event :(
Huh I guess nobody really knows why
Try putting the damage script in a separate script that goes into the beam itsself
Oh!!! Copying the damage script and pasting it in the laser beam! Didn't think of that :o