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