Is there a way to make a part "invisible" ? (Photo)

Hello, I would like to know if there is a way to make parts invisible for players from a certain point of view, but that the parts are still “visible” in the properties? As if there was an invisible wall in front of the parts that prevents from seeing what is behind it. Thanks

3 Likes

What exactly do you mean by

Chars

You could make it client based. Only certain peoples clients can see it.

I know that, however I don’t understand what he means by from certain pov’s

If they are mesh parts i have a very simple solution that works. Are they mesh parts or can you convert them to mesh parts?

There is a plugin which converts parts to mesh by the way.

Once you convert that obby or whatever that is to mesh parts…set their transparency to 0.01. Then create a giant wall between the structure and the map, make it in Glass material. You know wont be able to see the mesh parts anymore if you are behind the Glass wall… and you can set the glass wall to transparency of 1 if you dont want to see that either.

I try a new solution. Let the parts be invisible when the player enters the game, and as soon as he touches a specific part, then everything becomes visible, and when he goes to touch another part, everything will become invisible again. So that he can never see it. Unfortunately my script doesn’t work, do you have any idea why?

plr = game.Players.LocalPlayer
function visible(hit)
	if hit.Parent.Name == plr.Name then
		for i,v in pairs(workspace.Course:GetChildren()) do
			if v:IsA("BasePart") then
				v.Transparency = 0
			end
		end
	end
end
game.Workspace.Disparait.Touched:Connect(visible)

Capture

No i can’t transform all parts into mesh

Move the map to replicated storage then back

There is a plugin that does it…in one click.

https://developer.roblox.com/en-us/api-reference/property/BasePart/LocalTransparencyModifier

2 Likes

Excellent resource… well done.

yes but transforming the parts into mesh adds latency and data to the game? I think so

@ABK2017 solution is the best and exactly what you are looking for.

2 Likes

I see, only the problem is that I have over 1000 parts to make invisible. That would be way too many lines for me.

But i’m trying this :
I try a new solution. Let the parts be invisible when the player enters the game, and as soon as he touches a specific part, then everything becomes visible, and when he goes to touch another part, everything will become invisible again. So that he can never see it. Unfortunately my script doesn’t work, do you have any idea why?

plr = game.Players.LocalPlayer
function visible(hit)
	if hit.Parent.Name == plr.Name then
		for i,v in pairs(workspace.Course:GetChildren()) do
			if v:IsA("BasePart") then
				v.Transparency = 0
			end
		end
	end
end
game.Workspace.Disparait.Touched:Connect(visible)

Capture

Unfortunatly the script doesn’t work for the moment, but i try to fix the problem

Try to define the folder Course up top instead… and are you using server script? And when you define it up top capitalize Workspace, and then just reference this variable in the pairs()

And you can use this same method to define all parts in Course with the localmodifier that @ABK2017 linked. You dont need to add a line for every part.

1 Like

You can make it all a model, put it in ReplicatedStorage, and then put this script in StarterGui.

local model = game.ReplicatedStorage:WaitForChild('YourModel')
local part = game.Workspace:WaitForChild('TriggerPart')

part.Touched:connect(function(p)
	if p.Parent == game.Players.LocalPlayer.Character then
		model:Clone().Parent = game.Workspace
	end
end)

Put a part in workspace called ‘TriggerPart’ or whatever you want and whenever it is touched your model, here called, ‘YourModel’ will become visible.

1 Like

Thank you, but i find perfect solution for me :

plr = game.Players.LocalPlayer
function visible(hit)
	if hit.Parent.Name == plr.Name then
		for i,v in pairs(game.workspace.Course:GetChildren()) do
			if v:IsA("BasePart") then
				v.Transparency = 0
			end
		end
	end
end
game.Workspace.Disparait.Touched:Connect(visible)

Capture

1 Like

Why not set the other courses far distances from one another and use the atmosphere instance to hide them entirely as they are far enough out you wont see them

You talk about the density in athmosphere ?