Effectively hiding other players' characters

Hello, I’m working on a system that hides other characters from the game locally.

I’ve been using a system that parents the player to the replicatedStorage, but this isn’t a viable solution since this occurs:

Also, setting transparency is not a viable option either. Any suggestions?

2 Likes

Is it not wanted to turn Transparency to 1 and CanCollide to false?

Chat bubbles show when you do that

why not disable bubble chat?
(or I believe its possible to modify it so you can turn it off, but I aint got time to hop on studio and check)

also this is probably stupid to ask but have you tried literally just deleting the player and/or the character?

It turns on and off, meaning the chaarcter should be recoverable

disabling bubble chat for my entire game is not ideal

What about anchoring them locally and then using :PivotTo to move them really far away (or maybe even just beneath the floor)? And then un-anchoring them when you want them to re-appear?

I’ve tried this. Same effect as the video above

2 Likes

If you need an option for hiding all other players instead of specific ones, then maybe you can do the transparency thing, but disable bubble chat locally when the player toggles the effect? Or possibly change the BubbleChatConfiguration.AdorneeName to an Attachment that is (once again) really far away?

How about just setting the parent of the other character to be nil locally?

This has the same effect as parenting it to the ReplicatedStorage

1 Like

So what are you going for here? … A player that is still there in everyway but just can’t be seen?

I’ll just guess …
This is not a working script but, it should have what you need to figure this out yourself.
The use of SetCoreGuiEnabled makes it a local script. Not sure what you’re doing here, if it’s to hold them still also … you can lock the torso.

Script
local Players = game:GetService("Players")

local function hidePlayer(playerName)
    local player = Players:FindFirstChild(playerName)
    if player then
        local character = player.Character
        if character then
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.Transparency = 1
                end
            end
        end
        game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, false)
    end
end

local function showPlayer(playerName)
    local player = Players:FindFirstChild(playerName)
    if player then
        local character = player.Character
        if character then
            for _, part in pairs(character:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.Transparency = 0
                end
            end
        end
        game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Chat, true)
    end
end

This just disables the chat input box

I dont understand
Isn’t that a good thing that theyd be gone but recoverable?

Might it be possible to disable it locally? (or having a script simply delete it whenever they appear?)