Nome do personagem/exibição de saúde

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

A instância é usada para criar modelos de personagens, tanto para avatares de usuário quanto para NPCs.Quando um Humanoid está presente dentro de um Model que contém uma parte chamada Cabeça , o Roblox exibe um nome e/ou barra de saúde acima dessa parte.

Character display information above an in-experience avatar

Através de várias propriedades Humanoid, você pode modificar o seguindo:

Exibir propriedades

digitarde distância de exibição

A propriedade Humanoid.DisplayDistanceType define como os usuários veem o nome/saúde de outros personagens em relação ao seu próprio personagem.

Visualizador

Quando o DisplayDistanceType de um humanoide é definido como HumanoidDisplayDistanceType.Viewer, ele vê o nome/saúde de outros humanóides dentro do alcance de seu próprio NameDisplayDistance e HealthDisplayDistance .Você pode considerar isso como a menor prioridade desde que não é levado em conta para outros humanóides configurados como sujeito ou nenhum .

No seguinte cenário, o personagem do usuário ( Visualizador ) tem um tamanho maior de NameDisplayDistance do que HealthDisplayDistance, como indicado pelos círculos.Como resultado, o usuário vê nomes de personagens para ambos Watchman e Octavia , mas só vê uma barra de saúde para Watchman .

Assunto

Quando o nome e a saúde de um humanoide são definidos como , ele toma controle total sobre seu próprio nome e exibição de saúde através de seus valores e .Efetivamente, outros humanóides só verão o nome/saúde do assunto dentro dessas distâncias do assunto humanóide.

No seguinte cenário, tanto Watchman e Octavia são definidos como Sujeito e seus NameDisplayDistance alcances são indicados pelos círculos.Apenas o nome Octavia é visto pelo usuário cujo personagem está dentro de sua faixa, mas fora do alcance do Watchman humanóide.

Nenhum

Quando o DisplayDistanceType de um humanoide é definido como HumanoidDisplayDistanceType.None, seu nome e barra de saúde não aparecem em nenhuma circunstância.No seguinte cenário, tanto Watchman e Octavia são definidos como Nenhum , então o outro personagem não vê o seu nome ou saúde mesmo quando estiver dentro do alcance.

digitarde exibição de saúde

A propriedade Humanoid.HealthDisplayType fornece mais controle sobre a visibilidade da barra de saúde do personagem.A barra reflete o Health do humanoide como um fator de sua MaxHealth e muda de cor de verde para amarelo para vermelho à medida que a saúde do humanoide diminui.

SempreAtivo

Quando o HealthDisplayType de um humanoide é definido como HumanoidHealthDisplayType.AlwaysOn, sua barra de saúde sempre aparece.

Exibir quando danificado

Um humanoide com HealthDisplayType definido para HumanoidHealthDisplayType.DisplayWhenDamaged mostra apenas uma barra de saúde quando seu Health é menor que seu MaxHealth.No seguinte cenário, Watchman tem saúde completa e não exibe uma barra de saúde, mas Octavia está danificada em 50% e exibe uma barra de saúde amarela.

Sempre Desligado

Quando a barra de saúde de um humanoide é definida como , sua barra de saúde nunca aparece em nenhuma circunstância.

Oclusão

A ocultação (esconder) de nomes humanóides atrás de paredes ou outros objetos é controlada pela propriedade do personagem Humanoid.NameOcclusion .

NãoOclusão

Quando um humanoide é escondido atrás de um objeto visível e seu NameOcclusion é definido como NameOcclusion.NoOcclusion, seu nome e saúde nunca são ocultados da visão de humanóides.

No seguinte cenário, tanto Watchman e Octavia são definidos para NãoOclusão .Embora ambos estejam suficientemente escondidos atrás de colunas de pedra, o humanoide de visualização ainda vê seus nomes/exibições de saúde.

OccludeTodos

Quando um humanoide é escondido atrás de um objeto visível e seu NameOcclusion é definido como NameOcclusion.OccludeAll, seu nome e saúde sempre são ocultados da visualização de humanóides.

No seguinte cenário, tanto Watchman e Octavia estão suficientemente escondidos atrás de colunas de pedra. Watchman está definido para OccludeAll , portanto, seu nome e saúde são ocultos do humanoide de visualização. Octavia , no entanto, está definida para NãoOclusão e seu nome/saúde permanecem visíveis ao humanoide de visualização.

Oclusão Inimigo

Quando um humanoide é escondido atrás de um objeto visível e seu NameOcclusion é definido como NameOcclusion.EnemyOcclusion, seu nome e saúde são ocultos apenas de humanóides inimigos (jogadores em um diferente Team ).

No seguinte cenário, tanto Watchman e Octavia estão suficientemente escondidos atrás de colunas de pedra, e ambos estão configurados para EnemyOcclusion .O humanoide de visualização e Watchman estão no mesmo Team, então a occlusão de nome/saúde não ocorrer.No entanto, o nome e a saúde de Octavia , na Equipeadversária, são ocultados.

Modifique a exibição de caracteres

Avatares de usuário

Para modificar o nome ou o display de saúde para cada avatar recebido em uma experiência, conecte os eventos Players.PlayerAdded e Player.CharacterAdded nos eventos Script e defina propriedades de exibição no personagem Humanoid.

Script - Personalização Global

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Dê a cada humanoide controle total sobre a distância de exibição de seu nome/saúde
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Defina a distância de exibição do nome para 20 studs
humanoid.NameDisplayDistance = 20
-- Defina a distância de exibição da barra de saúde para 15 metros
humanoid.HealthDisplayDistance = 15
-- Mostrar barra de saúde apenas quando o humanoide está danificado
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Você também pode personalizar propriedades com base no nome de um jogador Team, como definir todos os jogadores "guarda" para um nome genérico e ocultar os nomes de todos os jogadores "ninja".

Script - Personalização de Equipe

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Defina o nome de todos os guardas para o genérico "Guarda"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Esconda o nome para todos os ninjas
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Personagens de NPC

Para personagens NPC já colocados no mundo 3D, você pode editar nome/saúde diretamente no objeto Humanoid na janela Propriedades.

Substituir nomes de exibição

Por padrão, o nome de exibição de um humanoide corresponde ao nome de usuário do Roblox do usuário Nome de Exibição que é único e separado de sua conta Nome de Usuário .Para mostrar um nome totalmente personalizado que não está relacionado à conta do usuário, você pode substituir a propriedade Humanoid.DisplayName.

Definir diretamente

Você pode definir a propriedade da qualquer instância que você ganha referência através de um , como o exemplo de personalização de equipe ou diretamente em um ObjetoHumanoid de um personagem NPC .

Definido através da entrada do usuário

Em alguns gêneros como roleplaying ou lutas, você pode querer fornecer um método para os usuários inserirem o próprio nome de personagem, nome do personagem de animal de estimação, etc.isso é específico para a experiência e não está ligado ao nome de exibição de sua conta.Você pode reunir essa entrada no lado do cliente através de uma entrada de nome TextBox .

Uma vez que o input é enviado, você pode passá-lo para o servidor através de um evento remoto remoto e, em seguida, no lado do servidor, ouça o evento remoto e atribua o nome filtrado ao personagem do usuário .

LocalScript - Evento de Fogo Remoto

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
Script - Atribuir Nome Filtrado

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Criar evento remoto para receber texto do cliente para filtrar
local changeNameEvent = Instance.new("RemoteEvent")
changeNameEvent.Name = "ChangeNameEvent"
changeNameEvent.Parent = ReplicatedStorage
local function onRequestNameChange(player, newName)
local character = player.Character
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local filterResult
local success, errorMessage = pcall(function()
filterResult = TextService:FilterStringAsync(newName, player.UserId)
end)
if success then
local filteredName
local success, errorMessage = pcall(function()
filteredName = filterResult:GetNonChatStringForBroadcastAsync()
end)
if success and humanoid then
humanoid.DisplayName = filteredName
end
end
end
changeNameEvent.OnServerEvent:Connect(onRequestNameChange)