How could I make the player be not invisible when zoomed in?

I want the player to be in first person, but they can see their body and legs and arms. I would also want the first person camera to be in front of the players face instead of in it. Any help that could point me in the right direction to find how to do this is appreciated. I couldnt find anything about this myself


By pressing play, and then looking inside the StarterPlayer, a whole bunch of new Modules should be there, including one called PlayerModule. From there you can access the CameraModule, and within that are the controls for the camera. By copying the PlayerModule from StarterPlayer and stopping the playtest and then pasting it into StarterPlayer in your game, you can edit the default camera behaviour.

Downside of this is that if ROBLOX updates camera behaviour the changes will not be pushed to your game.


would i paste it into starter player or starter character?

You’d do it like this:


1 Like

Ok, thanks I will try to find the script that controls the player transparency

So, I really have no idea what i am doing and I thought this would be as easy as setting some values to false, how would I tell the script that you cannot make some parts of the body transparent?

I tried reading the script and doing this, but it didnt work (i kind of expected that)

Just replace all the code inside there with return false and then delete the duplicated function.

1 Like

I did that, but when the character walk the camera lags behind the head, so the head becomes visible and then invisible and visible. And some people may have hats blocking their view, so I wanted to tell it that these are the parts you cannot make invisible

I’m confused by what you’re asking for. If you need all body parts to never be made invisible then just return false from that check function.

1 Like

I want the head and the hats to become invisible, but not the rest of the body

Ok I’ll see if I can do that on my end.

local character = game.Players.LocalPlayer
for i, v in pairs(character:GetChildren()) do
if v.Name ~= "Head" and v.Name ~= "HumanoidRootPart" and v:IsA("BasePart") then
v.LocalTransparencyModifier = 0
--written in devforum
1 Like

where would i put that script?

Put it in StarterCharacterScripts


function TransparencyController:HasAccessoryAncestor(object)
	if object.Parent == nil then return false end
	return object.Parent:IsA("Accessory") or self:HasAccessoryAncestor(object.Parent)

function TransparencyController:IsValidPartToModify(part)
	if part:IsA('BasePart') or part:IsA('Decal') then
		return self:HasAccessoryAncestor(part)
	return false

Try and see if this gives your desired effect. It hides the hats and not the body parts. Leave the HasToolAncestor function unchanged as it is used elsewhere.


No, that’s for User Interface.

LocalPlayer Mouse etc. works the same in PlayerGui it’s just better to manage because StarterCharacterScripts is parented by two

You could also put it in a tool

StarterCharacter spawns the script every new character.

So does PlayerGui and tools (if the tool is made to spawn with the player)