Issue with users being invisible in first person

Hey, I want users to not become invisible in first person when using my seat.
When users go to my camera seat in first person, they become invisible in the camera. Here’s a video to describe it: https://i.gyazo.com/3da76a3110b8045bc1403016121e8eba.gif
I’ve not found any solutions for this issue, here’s the Camera handler script:

local plr = game.Players.LocalPlayer

local char = plr.Character or plr.CharacterAdded:Wait()


local cam = workspace.CurrentCamera


local function alphabeticalOrder(instance)
	
	local children = instance:GetChildren()
	
	table.sort(children, function(c1, c2)
		
		return c1.Name:lower() < c2.Name:lower()
		
	end)
	
	return children
	
end

local camParts = alphabeticalOrder(workspace.Cameras)


local LArrow = script.Parent.LeftArrow

local RArrow = script.Parent.RightArrow


local arrowClickCooldown = false


char:WaitForChild("Humanoid").Seated:Connect(function(isSeated, seat)
	
	if not isSeated or seat.Name ~= "CameraSeat" then 
		
		script.Parent.LeftArrow.Visible = false
		script.Parent.RightArrow.Visible = false
		script.Parent.CameraJump.Visible = false
		
		cam.CameraType = Enum.CameraType.Custom
		
		return 
	end
	
	
	script.Parent.LeftArrow.Visible = true
	script.Parent.RightArrow.Visible = true
	script.Parent.CameraJump.Visible = true
	
	
	cam.CameraType = Enum.CameraType.Scriptable
	
	cam.CFrame = camParts[1].CFrame
	
	
	local camNumber = 1
	
	
	RArrow.MouseButton1Click:Connect(function()
		
		if arrowClickCooldown then return end
		
		arrowClickCooldown = true
		
		
		if camNumber == #camParts then
			
			cam.CFrame = camParts[1].CFrame
			 
			camNumber = 1
		else
			
			cam.CFrame = camParts[camNumber + 1].CFrame
			
			camNumber = camNumber + 1
		end
		
		
		wait(0.1)
		
		arrowClickCooldown = false
		
	end)
	
	
	LArrow.MouseButton1Click:Connect(function()
		
		if arrowClickCooldown then return end
		
		arrowClickCooldown = true
		
		
		if camNumber == 1 then
			
			cam.CFrame = camParts[#camParts].CFrame
			
			camNumber = #camParts
		else
			
			cam.CFrame = camParts[camNumber - 1].CFrame
			
			camNumber = camNumber - 1
		end
		
		
		wait(0.1)
		
		arrowClickCooldown = false
		
	end)
	
end)

Here’s my setup too:

Any help is appreciated, thanks.

1 Like

i found out a topic that may help you : Is there a way to make arms visible in first person with the new script?

Try setting the LocalTransparencyModifier to 0:

for _, part in ipairs(character:GetDescendants()) do
	if part:IsA("BasePart") then
		part.LocalTransparencyModifier = 0
	end
end
1 Like

Sorry for the late reply, would this go into the CameraHandler script?

No, it would just go in the script where you changed the camera, and then you can do a first person check to set it back to 1 once they get out.

local camera = workspace.CurrentCamera
local head = game.Players.LocalPlayer.Character:WaitForChild("Head")
local function IsFirstPerson()
     return (head.CFrame.p - camera.CFrame.p).Magnitude < 1
end

Sorry, bit new to scripting. Got this one from youtube, the CameraHandler script is the only script for this system. Could you explain more as I don’t quite understand, apologies.

local plr = game.Players.LocalPlayer

local char = plr.Character or plr.CharacterAdded:Wait()
local cam = workspace.CurrentCamera
local head = char:WaitForChild("Head")

local function IsFirstPerson()
     return (head.CFrame.p - cam.CFrame.p).Magnitude < 1
end


local function alphabeticalOrder(instance)
	
	local children = instance:GetChildren()
	
	table.sort(children, function(c1, c2)
		
		return c1.Name:lower() < c2.Name:lower()
		
	end)
	
	return children
	
end

local camParts = alphabeticalOrder(workspace.Cameras)


local LArrow = script.Parent.LeftArrow

local RArrow = script.Parent.RightArrow


local arrowClickCooldown = false


char:WaitForChild("Humanoid").Seated:Connect(function(isSeated, seat)
	
	if not isSeated or seat.Name ~= "CameraSeat" then 

		for _, part in ipairs(character:GetDescendants()) do
			if part:IsA("BasePart") then
				part.LocalTransparencyModifier = 0
			end
		end
		
		script.Parent.LeftArrow.Visible = false
		script.Parent.RightArrow.Visible = false
		script.Parent.CameraJump.Visible = false
		
		cam.CameraType = Enum.CameraType.Custom
		
		return 
	end
	
	if IsFirstPerson() then
		for _, part in ipairs(character:GetDescendants()) do
			if part:IsA("BasePart") then
				part.LocalTransparencyModifier = 1
			end
		end
	end
	script.Parent.LeftArrow.Visible = true
	script.Parent.RightArrow.Visible = true
	script.Parent.CameraJump.Visible = true
	
	
	cam.CameraType = Enum.CameraType.Scriptable
	
	cam.CFrame = camParts[1].CFrame
	
	
	local camNumber = 1
	
	
	RArrow.MouseButton1Click:Connect(function()
		
		if arrowClickCooldown then return end
		
		arrowClickCooldown = true
		
		
		if camNumber == #camParts then
			
			cam.CFrame = camParts[1].CFrame
			 
			camNumber = 1
		else
			
			cam.CFrame = camParts[camNumber + 1].CFrame
			
			camNumber = camNumber + 1
		end
		
		
		wait(0.1)
		
		arrowClickCooldown = false
		
	end)
	
	
	LArrow.MouseButton1Click:Connect(function()
		
		if arrowClickCooldown then return end
		
		arrowClickCooldown = true
		
		
		if camNumber == 1 then
			
			cam.CFrame = camParts[#camParts].CFrame
			
			camNumber = #camParts
		else
			
			cam.CFrame = camParts[camNumber - 1].CFrame
			
			camNumber = camNumber - 1
		end
		
		
		wait(0.1)
		
		arrowClickCooldown = false
		
	end)
	
end)

Thank you very much, I appreciate your help!