How can i make my avatar invisible

They do work the same, but using BasePart is a better practice and correlates with how Roblox classifies elements, and it is better to make sure it is able to survive though updates (like if roblox makes an element that inherits BasePart, but doesn’t have Part in the class name).

Another alternative to Connect is

while true do
RunService.RenderStepped:Wait()
-- code
end

Should prevent the Output spamming errors in case

Absolutely not! It’s completely useless, there’s no need to do this…

it printed out an error “Render stepped can only be used in local scripts”

You have to use it in a LocalScript.

Try using Stepped or Heartbeat

But i want to make everyone see it not only the client

You don’t see the point, it only errors once and doesnt spam the output

Is there any other method then running the stepped event since it will run forever?

Is I stated here, you can use break or continue to end the loop

This isn’t necessarily true, this method will miss:

  • UnionOperation
  • Seat
  • VehicleSeat
  • NegateOperation
  • SpawnLocation

Yeah we already got that covered, thanks tho

Altight now it works thanks alot

What do you mean? Which script did you use?

Actually, it’s probably not a great idea to have a constant loop setting the transparency every single physics step. There’s no good way to do it with CharacterAppearanceLoaded, but it’s probably best to wait a second or two rather than constantly setting properties which were already set in the first place.

Screen Shot 2022-11-26 at 10.21.31 AM
(This is pretty major for a simple script like this)

The render stepped thing that you posted just i modified it with the Stepped Event

I’m happy that I helped you! Have a nice day.

Yes, but the performance impact is significant enough that if many players did it at once, it’d probably slow the server down significantly. Maybe instead of constantly setting, you could try setting it once, then checking again in 2 or so seconds:

local Character = script.Parent

for i,v in pairs(Character:GetDescendants()) do
	if v:IsA("Decal") or v:IsA("BasePart") then
		v.Transparency = 1
	end
end

task.delay(2,function()
	for i,v in pairs(Character:GetDescendants()) do
		if v:IsA("Decal") or v:IsA("BasePart") then
			v.Transparency = 1
		end
	end
end)

During testing, this had the same effect but it reduced it to 0% activity.

Actually, it typically loads at least some of them (at least in studio). Also, I acknowledged the fact that some parts would be still visible, however the performance impact is severe enough that a loop wouldn’t be worth it. If you want, you can use a DescendantAdded event instead:

local Character = script.Parent

for i,v in pairs(Character:GetDescendants()) do
	if v:IsA("Decal") or v:IsA("BasePart") then
		v.Transparency = 1
	end
end

Character.DescendantAdded:Connect(function(obj)
	if obj:IsA("BasePart") or obj:IsA("Decal") then
		obj.Transparency = 1
	end
end)
1 Like

This actually works and without a loop im going to change the code to this