Billboard GUI won't show up on player's head

local players = game:GetService("Players")
local me = players.colbert2677
local desc = players:GetHumanoidDescriptionFromUserId(players:GetUserIdFromNameAsync("ch0c0lAte98"))
me:LoadCharacterWithHumanoidDescription(desc)

Oh, I see. I guess it was my code that makes it glitched. Thanks for your help!

I had this same issue, where the Name GUI would not appear over the person’s head if they had a custom head, like the Woman Head for instance. If anyone has a similar issue, I fixed this by using the CharacterAppearanceLoaded method instead of the CharacterAdded method.

Or you can use humanoidrootpart like a normal person???

I used to have this issue.
Instead of getting the character like this:
player.Character or player.CharacterAdded:Connect(function(character)
Try getting the character from workspace like this:
game.Workspace[player.Name]

That’s horrible advice. This runs the risk of indexing the wrong instance if a player is named the same as an instance in the current session and can introduce a number of unexpected errors. Never get the player by searching them with a name in the Workspace. You already get a reference to the character instance through the player’s Character property or passed as an argument to CharacterAdded.

2 Likes

I remember having the same problem and I fixed it like this:

function CharacterAdded(Character)
      task.wait(1)
      --Insert the code that puts the GUI in the head here
end

game.Players.PlayerAdded:Connect(function(Player)
      Player.CharacterAdded:Connect(CharacterAdded)
      if Player.Character then CharacterAdded(Player.Character) end
end

Try this and let me know if it works :slightly_smiling_face:

This is an old topic but I have a few things to add:

First thing, don’t know why but I ran into this issue as well. Did what you said to do and debugged turns out for whatever reason, the first head that is added to the character is destroyed, then a second head is added then the first head is disposed of which caused my billboard guis to be adorned to a destroyed instance:

image
^ first print is the overhead’s parent (irrelevant), second is inside of the childadded connection later in the post, third is the old head’s class name but again not relevant.

We have a custom respawn handler so CharacterAutoLoads is false but unsure as to whether or not this is a contributor to the issue. However disabling workspace.MeshPartHeadsAndAccessories actually seems to cause it not to happen so don’t really know. Tried printing the first head’s class name and it’s still a mesh , so two mesh parts are still made for whatever reason but the first one is discarded.

Anyway, my fix to this was to implement the following (the character is actually being destroyed by custom respawn handler so it isn’t a memory leak, so if you’re implementing this solution ensure you disconnect your connections when a new char is added), to re-adorn the overhead to the new head (sorry for indenting, copied and pasted it here) which caused the issue to subside.

		character.ChildAdded:Connect(function(child)
			if child.Name == 'Head' then
				newOverhead.Adornee = child
			end
		end)

But on a sidenote doing this for whatever reason causes the overhead to update super weirdly and sporadically so I don’t know but it seems either I’m doing something wrong, or billboards don’t like mesh parts so I’ll be disabling the mesh part heads and accessories:

For reference this is how it looks when adorned to the head with meshpart heads and accessories disabled:

Difference probably isn’t super noticeable given how low quality gyazo records gifs but I think there is still is a difference. Anyway, I’m going off-topic and I don’t know how to conclude things so I’ll end it here

2 Likes