I followed a tutorial for how to make a spectating script from a video on Youtube made one year ago(video maker is TheIceZombieSlayer Videos). Everything works fine, except every so often when I enter my game the camera gets stuck in one place and I cannot move it, while the rest of my game runs like normal(resetting does not help). It doesn't seem like anyone in the comment section of the video had the same problem I am having. I will paste my code below:
Player = game.Players.LocalPlayer
ScGUI = script.Parent
Camera = game.workspace.CurrentCamera
UIS = game:GetService("UserInputService")
Spectating = false
Index = 1
Camera.CameraSubject = Player.Character
function Watch(player)
if player and player.Character and Camera.CameraSubject ~= player.Character then
Camera.CameraSubject = player.Character
ScGUI.SpectateFrame.TextLabel.Text = "*"..player.Name.."*"
end
end
function ChangeState(bool)
if bool == nil then
Spectating = not Spectating
else
Spectating = bool
end
if Spectating then
ScGUI.SpectateButton.Image = "rbxassetid://3376963769"
ScGUI.SpectateFrame.Visible = true
else
Watch(Player)
ScGUI.SpectateButton.Image = "rbxassetid://3364442186"
ScGUI.SpectateFrame.Visible = false
end
end
function CurrentCourse()
return workspace.CurrentCourse:GetChildren()[1]
end
function IncrementIndex(num)
local TempIndex = Index + num
local Course = CurrentCourse()
local TempContestants = Course.CourseInfo.TempContestants
local Contestants = TempContestants:GetChildren()
if TempIndex > #Contestants then
TempIndex = 1
elseif TempIndex < 1 then
TempIndex = #Contestants
end
Index = TempIndex
end
ScGUI.SpectateButton.MouseButton1Click:connect(function ()
ChangeState()
end)
UIS.InputBegan:connect(function (Input)
if Input.KeyCode == Enum.KeyCode.Q then
IncrementIndex(-1)
elseif Input.KeyCode == Enum.KeyCode.E then
IncrementIndex(1)
end
end)
ScGUI.SpectateFrame.PreviousButton.MouseButton1Click:connect(function ()
IncrementIndex(-1)
end)
ScGUI.SpectateFrame.NextButton.MouseButton1Click:connect(function ()
IncrementIndex(1)
end)
game:GetService("RunService").RenderStepped:connect(function ()
local Course = CurrentCourse()
if Course then
local TempContestants = Course:WaitForChild("CourseInfo"):WaitForChild("TempContestants")
local Contestants = TempContestants:GetChildren()
if not TempContestants:FindFirstChild(Player.Name) then
ScGUI.SpectateButton.Visible = true
if Spectating then
IncrementIndex(0)
Watch(Contestants[Index].Value)
end
else
ScGUI.SpectateButton.Visible = false
ChangeState(false)
end
else
ScGUI.SpectateButton.Visible = false
ChangeState(false)
end
end)
Can someone please explain how I can fix this glitch?

2 comments
Does the console show any errors?
@Sonnenroboter no, the camera freezes with no errors