Everytime the Guided Rocket Launches, The camera started getting glitch, Here's the script:

local active
local Tool = script.Parent
local Launcher = Tool.Handle

local Rocket = Instance.new("Part")
Rocket.Locked = true
Rocket.BackSurface = 3
Rocket.BottomSurface = 3
Rocket.FrontSurface = 3
Rocket.LeftSurface = 3
Rocket.RightSurface = 3
Rocket.TopSurface = 3
Rocket.Size = Vector3.new(1, 2.5, 1)
Rocket.BrickColor = BrickColor.new(23)
Rocket.FormFactor = 3


local rocketMesh = Instance.new("SpecialMesh")
rocketMesh.MeshId = "http://www.roblox.com/asset/?id=31601976"
rocketMesh.TextureId = "http://www.roblox.com/asset/?id=31601599"
rocketMesh.Parent = Rocket

local debris = game:GetService("Debris")

local swooshSound
local explosionSound

local vCharacter
local vPlayer

function blow(hit, missile)
	active = false
	game.Workspace.CurrentCamera.CameraSubject = game.Players.LocalPlayer.Character.Humanoid
game.Workspace.CurrentCamera.CameraType = "Custom"
	if missile  == nil then return end
	if swooshSound then swooshSound:stop() end
	explosion = Instance.new("Explosion")
	explosion.Position = missile.Position
	-- find instigator tag
	local creator = missile:FindFirstChild("creator")
	explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
	explosion.Parent = game.Workspace	
	if explosionSound then explosionSound:Play() end
	wait(.1)
	if missile then missile:Remove() end
end

function onPlayerBlownUp(part, distance, creator)
	if part.Name == "Head" or part.Name == "Torso" then	
		local humanoid = part.Parent.Humanoid
		tagHumanoid(humanoid, creator)
	end
end

function tagHumanoid(humanoid, creator)
	-- tag does not need to expire if all explosions lethal	
	if creator ~= nil then
		local new_tag = creator:clone()
		new_tag.Parent = humanoid		
	end
end

function fire(vTarget)
	local vCharacter = Tool.Parent	
	local vHandle = Tool:findFirstChild("Handle")
	if vHandle == nil then
		print("Handle not found")
		return 
	end
	local direction = vTarget - vHandle.Position
	direction = computeDirection(direction)
	local missile = Rocket:clone()
	local pos = vHandle.Position + (direction * 10.0)		
	missile.CFrame = CFrame.new(pos,  pos + direction) * CFrame.Angles(math.pi/2, 0, 0)

	local creator_tag = Instance.new("ObjectValue")

	local vPlayer = game.Players:GetPlayerFromCharacter(vCharacter)

	if vPlayer == nil then
		print("Player not found")
	else
		if (vPlayer.Neutral == false) then -- nice touch
			missile.BrickColor = vPlayer.TeamColor
		end
	end

	local floatForce = Instance.new("BodyForce")
	floatForce.force = Vector3.new(0, missile:GetMass() * 196.1, 0.0)
	floatForce.Parent = missile

	missile.Velocity = computeDirection(Tool.Parent.Humanoid.TargetPoint - missile.Position) * 20.0
	
	creator_tag.Value = vPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile	

	missile.Parent = game.Workspace

	if swooshSound then swooshSound:Play() end

	missile.Touched:connect(function(hit) blow(hit, missile) end)

	debris:AddItem(missile, 100.0)
	local cam = workspace.CurrentCamera
cam.CameraSubject = missile
cam.CameraType = "Follow"
active = true
while(active) do
	direction =  computeDirection(Tool.Parent.Humanoid.TargetPoint - missile.Position)
	missile.Velocity = direction * 20.0
 
	--The below line of code wasn't in the tutorial.  It's optional and just points the missile in the right direction
	missile.CFrame = CFrame.new(missile.Position,  missile.Position + direction) * CFrame.Angles(math.pi/2, 0, 0)
	wait()
end
end

function computeDirection(vec)
	local lenSquared = vec.magnitude * vec.magnitude
	local invSqrt = 1 / math.sqrt(lenSquared)
	return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end

Tool.Enabled = true
function onActivated()
	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end

	swooshSound = Launcher:FindFirstChild("Swoosh")
	explosionSound = Launcher:FindFirstChild("Explosion")

	local targetPos = humanoid.TargetPoint

	fire(targetPos)

	wait(7)

	Tool.Enabled = true
end


script.Parent.Activated:connect(onActivated)