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)
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)