Nome/Saúde do Personagem

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

A instância Humanoid é 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 2>Cabeça2>, o Roblox exibe uma barra de nome e/ou saúde acima da parte.

Character display information above an in-experience avatar

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

  • A distância a partir da qual os usuários podem ver o nome/saúde de outros humanóides em relação ao seu próprio personagem.
  • O nome de exibição que mostra sobre um humanóide.
  • Se a barra de saúde de um humanóide sempre aparece, nunca aparece ou apenas aparece quando o humanóide está danificado.
  • Se nomes e barra de saúde estão ocultos (escondidos) quando a linha de visão entre a câmera e outro humanóide é bloqueada.

Propriedades de Exibição

Tipo de distância de exibição

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

Visualizador

Quando um humanóide's DisplayDistanceType é definido para HumanoidDisplayDistanceType.Viewer e

No seguinte cenário, o personagem do usuário ( Viewer ) tem um maior NameDisplayDistance do que HealthDisplayDistance, como mostrado pelos círculos. Como resultado, o usuário vê nomes de personag

Sujeito

Quando um humanóide's DisplayDistanceType é definido para HumanoidDisplayDistanceType.Subject , ele leva

No seguinte cenário, tanto Watchman quanto Octavia estão configurados como Sujeito e suas 2> Class.Humanoid.NameDisplayDistance|NameDisplay 5> alcance5> são mostrados pelos círculos. Apenas o nome 8> Octavia8> é visto pelo usuário cujo personagem

Nenhum

Quando um humanóide's DisplayDistanceType é definido para HumanoidDisplayDistanceType.None, sua barra de nome e saúde não aparece sob nenhuma circunstância. No seguinte cenário, ambos os personagens Watchman

Tipo de 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 estado de saúde do personagem Health como um fator de seu MaxHealth e muda a cor de verde para amarelo para red como o estado de saúde do personagem diminui.

SempreAtivo

Quando um humanóide's HealthDisplayType é definido como HumanoidHealthDisplayType.AlwaysOn, sua barra de saúde sempre aparece.

ExibirQuandoDano

Um humanóide com HealthDisplayType definido como HumanoidHealthDisplayType.DisplayWhenDamaged apenas mostra uma barra de saúde quando seu

SempreDesligado

Quando um humanóide de HealthDisplayType é definido como HumanoidHealthDisplayType.AlwaysOff, sua barra de saúde nunca aparece sob nenhuma circunstância.

Oclusão

Oclusão (esconder) de nomes de humanóide atrás de paredes ou outros objetos é controlado pela propriedade Humanoid.NameOcclusion do personagem.

NãoOcclusion

Quando um humanóide é escondido atrás de um objeto visível e sua NameOcclusion está definida como NameOcclusion.NoOcclusion , seu nome e saúde nunca são ocultos ao visualizar os humanóides.

No seguinte cenário, tanto Watchman quanto Octavia estão configurados para NãoOclusão. Embora ambos estejam ocultos por trás de colunas de pedra, o visual humanoide ainda vê seus nomes/displays de saúde.

Excluir todos

Quando um humanóide é escondido atrás de um objeto visível e sua NameOcclusion está definida como NameOcclusion.OccludeAll, seu nome e saúde são sempre ocultos ao visualizar humanóides.

No seguinte cenário, tanto Watchman quanto Octavia estão ocultos o suficiente atrás das colunas de pedra. Watchman está configurado para 1> OccludeAll1>, portanto, seu nome e saúde são ocultos do humanóide de visualização. 4> Octavia 4>, no entanto, está configurado para

Oclusão Inimiga

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

No seguinte cenário, tanto Watchman quanto Octavia estão ocultos suficientemente atrás das colunas de pedra, e ambos estão configurados para EnemyOcclusion. O visual humanoide e 2> Watchman2> estão no mesmo 5> Class.Equipe5>, portanto, a oc

Modificando Exibições de Personagens

Avatares de Usuário

Para modificar o nome ou exibição de saúde de todos os avatares em uma experiência, conecte os eventos Players.PlayerAdded e Player.CharacterAdded em um Script e configure as propriedades de exibição 2>onCharacter2> no personagem.

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 o controle completo sobre sua distância de exibição de nome/saúde
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Definir a distância de exibição do nome para 20 studs
humanoid.NameDisplayDistance = 20
-- Definir a distância de exibição da barra de saúde para 15 studs
humanoid.HealthDisplayDistance = 15
-- Mostrar apenas a barra de saúde quando o hidroide estiver danificado
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Você também pode personalizar propriedades com base em um jogador's 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 genérico "Guarda"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Ocultar o nome de todos os ninjas
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Personagens NPC

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

Substituindo Nomes de Exibição

Por padrão, o nome de exibição de um humanóide corresponde ao nome de usuário da conta Roblox Display Name que é único e separado de sua conta Username . Para mostrar um nome totalmente personalizado que não está relacionado à conta do usuário, você pode sobrescrever a propriedade Humanoid.DisplayName.

Configurando Diretamente

Você pode definir a propriedade DisplayName de qualquer instância de Class.Humanoid que você ganha referência através de um Humanoid , como o exemplo de Script ou diretamente em um objeto de 1>NPC1> .

Configurando através da entrada do usuário

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

Uma vez que a entrada for enviada, você pode passá-la para o servidor através de um evento remoto e, em seguida, no lado do servidor, ouça o evento remoto e atribua o nome filtrado ao personagem do usuário's Class.Humanoid ’.

LocalScript - Evento Remoto de Fogo

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 um 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)