Nombre/Estado de Salud del Personaje

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

La instancia Humanoid se usa para crear modelos de personajes, tanto para avatares de usuarios como para NPCs. Cuando un Class.Humanoid está presente dentro de un Class.Model que contiene una parte llamada Humanoid, Roblox muestra una barra de nombre y/o salud sobre esa parte.

Character display information above an in-experience avatar

A través de varias propiedades de Humanoid, puedes modificar lo siguiendo:

  • La distancia desde la que los usuarios pueden ver el nombre / salud de otros humanoides en relación con su propio personaje de humanoides.
  • El nombre de visualización que muestra sobre un humanoid.
  • Si la barra de salud de un humanoid siempre aparece, nunca aparece o solo aparece cuando el humanoid está dañado.
  • Si las barras de nombres y salud están ocultas cuando la línea de visión entre la cámara y otro humanoide está bloqueada.

Propiedades de pantalla

Tipo de distancia de visualización

La propiedad Humanoid.DisplayDistanceType establece cómo los usuarios ven el nombre/salud de otros personajes en relación con su propio personaje.

Visor

Cuando se establece el DisplayDistanceType de un humanoide en HumanoidDisplayDistanceType.Viewer y Class.

En el siguiente escenario, el personaje del usuario ( Viewer ) tiene un mayor NameDisplayDistance que HealthDisplayDistance , como se muestra por los círculos. Como resultado, el usuario ve nombres de personajes para ambos <

Asunto

Cuando se establece el DisplayDistanceType de un humanoide en HumanoidDisplayDistanceType.Subject y Class.Humanoid.

En el siguiente escenario, tanto Watchman como Octavia están configurados como Sujeto y sus rangos 1> Class.Humanoid.NameDisplayDistance|NameDisplayDistance1> se indican con los círculos. Solo el nombre 4> Octavia 4> es visto por el usuario cuyo personaje está dentro de su rango pero fu

Ninguno

Cuando se establece el DisplayDistanceType de un humanoide en HumanoidDisplayDistanceType.None , su nombre y barra de salud no aparecen bajo ninguna circunstancia. En el siguiente escenario, tanto Watchman como 1> Octavia1> están est

Tipo de salud

La propiedad Humanoid.HealthDisplayType proporciona un control adicional sobre la visibilidad de la barra de salud del personaje. La barra refleja la salud del personaje Health como factor de su MaxHealth y cambia de color de verde a amarillo a rojo a medida que disminuye la salud del personaje

Siempre activado

Cuando se establece el HealthDisplayType de un humanoide en HumanoidHealthDisplayType.AlwaysOn, siempre aparece su barra de salud.

Mostrar cuando estés dañado

Un humanoide con HealthDisplayType configurado para HumanoidHealthDisplayType.DisplayWhenDamaged solo muestra una barra de sal

Siempre desactivado

Cuando se establece el HealthDisplayType de un humanoide en HumanoidHealthDisplayType.AlwaysOff, su barra de salud nunca aparece bajo ninguna circunstancia.

Oclusión

La ocultación (escondida) de los nombres de los humanoides detrás de paredes o otros objetos está controlada por la propiedad Humanoid.NameOcclusion del personaje.

NoOcclusion

Cuando un humanoide está oculto detrás de un objeto visible y su NameOcclusion está configurado como NameOcclusion.NoOcclusion , su nombre y salud nunca están ocultos de la vista de los humanoides.

En el siguiente escenario, tanto Watchman como Octavia están configurados como NoOcclusion. Aunque ambos están lo suficientemente ocultos detrás de las columnas de piedra, el humano de visualización todavía ve sus nombres / salud de显示.

Occluir todo

Cuando un humanoide está oculto detrás de un objeto visible y su NameOcclusion está configurado como NameOcclusion.OccludeAll , su nombre y salud siempre están ocultos de la vista de los humanoides.

En el siguiente escenario, tanto Watchman y Octavia están ocultos lo suficiente detrás de las columnas de piedra. Watchman está configurado para 1> OccludeAll 1>, por lo que su nombre y salud están ocultos del humanoide de vista. 4> Octavia ', sin embargo, está configurado para 7> NoOc

Oclusión enemiga

Cuando un humanoid se oculta detrás de un objeto visible y su NameOcclusion está configurado como NameOcclusion.EnemyOcclusion , su nombre y salud solo están ocultos de los humanoides enemigos (jugadores en un diferente Team ) .

En el siguiente escenario, tanto Watchman y Octavia están lo suficientemente ocultos detrás de las columnas de piedra, y ambos están configurados para EnemyOcclusion . El humanoide de vista y 1> Watchman1> están en el mismo 4> Class.equipo 4>, por lo

Modificando Muelles de Personajes

Avatares de usuarios

Para modificar el nombre o la salud de los avatares entrantes en una experiencia, conecta los eventos Players.PlayerAdded y Player.CharacterAdded en un Script y establece propiedades de visualización en el personaje 2>Class.Humanoid2>.

Script - Personalización global

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Darle a cada humanoide el control completo de su nombre / distancia de salud
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Establecer el rango de nombre a 20 espaldas
humanoid.NameDisplayDistance = 20
-- Establece la distancia de la barra de salud en 15 studs
humanoid.HealthDisplayDistance = 15
-- Solo mostrar barra de salud cuando el humanoide está dañado
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

También puede personalizar propiedades según el Team de un jugador, como establecer todos los jugadores "guardia" a un nombre genérico y ocultar los nombres de todos los jugadores "ninja".

Script - Personalización del equipo

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Establecer el nombre de todos los guardias a genérico "Guardia"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Ocultar el nombre de todos los ninjas
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Personajes NPC

Para los personajes de NPC ya colocados en el mundo 3D, puede editar el nombre / salud directamente en el objeto Humanoid en la ventana Propiedades.

Omitir nombres de pantalla

Por defecto, el nombre de un humanoide coincide con la cuenta de usuario de Roblox Nombre de usuario que es única y separada de su cuenta Nombre de usuario . Para mostrar un nombre totalmente personalizado que no está relacionado con la cuenta del usuario, puede anular la propiedad Humanoid.DisplayName .

Configurar directamente

Puede establecer la propiedad DisplayName de cualquier instancia de Humanoid que obtenga referencia a través de un Script, como el ejemplo de personalización de equipos o directamente en un objeto de 1>NPC1> de personaje.

Configuración a través de la entrada del usuario

En algunos géneros como el rol o la lucha, puede que quieras proporcionar una forma para que los usuarios ingresen el nombre de su propio personaje, el nombre de mascota, etc. que es específico para la experiencia y no está vinculado a su nombre de visualizacióncuenta. Puedes recopilar esta entrada en el lado del cliente a través de una entrada de nombre de TextBox.

Una vez que se envíe el input, puede pasarlo al servidor a través de un evento remoto y luego, en el lado del servidor, escuchar el evento remoto y asignar el nombre filtrado al personaje de usuario's Humanoid .

LocalScript - Evento remoto de fuego

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
Script - Asignar Nombre Filtro

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Crea un evento remoto para recibir texto del 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)