So, I've been trying to make a script where the bullets can be seen whizzing through the air if one looks closely, and have more in depth mechanics such as penetration. First I tried velocity, but it was very laggy (lots of rubber-banding) and the bullets didn't always make contact for the faster ones.

Now, I'm trying tweening the position, but the "Touched" event will not fire at all, even at normal speeds (player walking). Any tips for how to detect collisions or a better way to do this?

--This is a small segment of my script that is used to calculate the bullet's movement

	--Begin the tweening of the bullet
	while velocity > 32 and bullet.Position.y > -100 do
		--Set the target position to move towards
		local targPos = bullet.CFrame * CFrame.new(velocity,-3.2,0)
		
		--Tween the bullet
		local tweenShot = TweenService:Create(bullet,TweenInfo.new(1),{CFrame = targPos}):Play()
		
		bullet.Touched:Connect(function()
			--Determine what the bullet hit
			if debounce then
				debounce = false
				--Stop the bullet to perform calculations
				tweenShot:Cancel()
			end
		end)
		
		velocity = velocity - 5
		wait(1)
	end