Tick() being really weird on inputbegan

Alright so I have run tick through input began when I start pressing Q and as soon as I press it, it ignored my checks sometimes and other times it kind of works

if tick() - length <= .5 then
	print("Held for " ..(tick() - length).." seconds.")
end
u.InputBegan:Connect(function(i,t)
	if t then return end
	if i.KeyCode == Enum.KeyCode.Q and isAir then
		local webHeld = math.floor(tick())
		CastWeb(m.Hit, m.Target, "LeftWebAttachment", webHeld)
	end
end)