local tool = script.Parent
local projectile_shooter = tool.Handle
local repstorage = game.ReplicatedStorage
local bullet = repstorage:WaitForChild("Bullet")
local effective_distance = 200
local speed = 200
local target = nil
local dmg = 10
while tool.Equipped do
	wait()
	tool.Activated:Connect(function()
		for i, v in pairs(game.Workspace:GetChildren()) do
			local human = v:FindFirstChild("Humanoid")
			local torso = v:FindFirstChild("UpperTorso")
			
			if human and torso then
				local newray = Ray.new(projectile_shooter.Position, (torso.Position - projectile_shooter.Position).Unit * effective_distance)
				local hit, position = game.Workspace:FindPartOnRayWithIgnoreList(newray, {projectile_shooter})
				
				if hit == torso then
					target = torso
				end
			end
		end

		if target then
			local torso = target
			projectile_shooter.CFrame = CFrame.new(projectile_shooter.Position, torso.Position)
			local newbullet = bullet:Clone()
			newbullet.Parent = game.Workspace
			newbullet.Position = projectile_shooter.Position
			newbullet.Velocity = projectile_shooter.CFrame.LookVector * speed
			
			newbullet.Touched:Connect(function(hit)
				local human = hit.Parent:FindFirstChild("Humanoid")
				if human then
					human:TakeDamage(dmg)
				end
			end)
		end

	end)
end

I was watching a raycasting tutorial and modified some of the code to make a gun. For some reason the projectile is not firing. I would like some help as to why.