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

A través de varias propiedades de Humanoid, puedes modificar lo siguiente:
- La distancia desde la cual los usuarios pueden ver el nombre/vida de otros humanoides en relación con el humanoide de su propio personaje.
- El nombre de visualización que se muestra sobre un humanoide.
- Si la barra de vida de un humanoide siempre aparece, nunca aparece o solo aparece cuando el humanoide ha sido dañado.
- Si los nombres y las barras de vida están ocultos (escondidos) cuando la línea de visión entre la cámara y otro humanoide está bloqueada.
Propiedades de visualización
Tipo de distancia de visualización
La propiedad Humanoid.DisplayDistanceType establece cómo los usuarios ven el nombre/vida de otros personajes en relación con su propio personaje.
Espectador
Cuando el DisplayDistanceType de un humanoide está configurado en HumanoidDisplayDistanceType.Viewer, ve el nombre/vida de otros humanoides dentro del rango de su propio NameDisplayDistance y HealthDisplayDistance. Puedes considerar esto la prioridad más baja ya que no se toma en cuenta para otros humanoides configurados como sujeto o ninguno.
En el siguiente escenario, el personaje del usuario (Espectador) tiene una NameDisplayDistance más grande que HealthDisplayDistance, como se indica en los círculos. Como resultado, el usuario ve los nombres de los personajes Guardabosques y Octavia, pero solo ve una barra de vida para Guardabosques.

Sujeto
Cuando el DisplayDistanceType de un humanoide está configurado en HumanoidDisplayDistanceType.Subject, toma control total sobre su propia visualización de nombre y vida a través de sus valores NameDisplayDistance y HealthDisplayDistance. Efectivamente, otros humanoides solo verán el nombre/vida del sujeto dentro de esas distancias desde el humanoide sujeto.
En el siguiente escenario, tanto Guardabosques como Octavia están configurados como Sujeto y sus rangos de NameDisplayDistance están indicados por los círculos. Solo el nombre Octavia es visto por el usuario cuyo personaje está de pie dentro de su rango pero fuera del rango del humanoide Guardabosques.

Ninguno
Cuando el DisplayDistanceType de un humanoide está configurado en HumanoidDisplayDistanceType.None, su nombre y barra de vida no aparecen bajo ninguna circunstancia. En el siguiente escenario, tanto Guardabosques como Octavia están configurados como Ninguno, por lo que el otro personaje no ve su nombre ni vida, incluso cuando está dentro del rango.

Tipo de visualización de la vida
La propiedad Humanoid.HealthDisplayType proporciona un mayor control sobre la visibilidad de la barra de vida del personaje. La barra refleja la Health del humanoide como un factor de su MaxHealth y cambia de color de verde a amarillo a rojo a medida que disminuye la salud del humanoide.
SiempreEncendida
Cuando el HealthDisplayType de un humanoide está configurado en HumanoidHealthDisplayType.AlwaysOn, su barra de vida siempre aparece.

MostrarCuandoDañado
Un humanoide con HealthDisplayType configurado en HumanoidHealthDisplayType.DisplayWhenDamaged solo muestra una barra de vida cuando su Health es menor que su MaxHealth. En el siguiente escenario, Guardabosques tiene salud completa y no muestra una barra de vida, pero Octavia está dañada en un 50% y muestra una barra de vida amarilla.

SiempreApagada
Cuando el HealthDisplayType de un humanoide está configurado en HumanoidHealthDisplayType.AlwaysOff, su barra de vida nunca aparece bajo ninguna circunstancia.

Oclusión
La oclusión (escondite) de los nombres de los humanoides detrás de paredes u otros objetos se controla mediante la propiedad Humanoid.NameOcclusion del personaje.
SinOclusión
Cuando un humanoide está oculto detrás de un objeto visible y su NameOcclusion está configurado en NameOcclusion.NoOcclusion, su nombre y vida nunca están ocultos de los humanoides que miran.
En el siguiente escenario, tanto Guardabosques como Octavia están configurados como SinOclusión. A pesar de que ambos están suficientemente ocultos detrás de columnas de piedra, el humanoide que mira aún ve sus visualizaciones de nombre/vida.

OcluirTodo
Cuando un humanoide está oculto detrás de un objeto visible y su NameOcclusion está configurado en NameOcclusion.OccludeAll, su nombre y vida están siempre ocultos de los humanoides que miran.
En el siguiente escenario, tanto Guardabosques como Octavia están suficientemente ocultos detrás de columnas de piedra. Guardabosques está configurado como OcluirTodo, por lo que su nombre y vida están ocultos del humanoide que mira. Sin embargo, Octavia está configurada como SinOclusión y su nombre/vida sigue siendo visible para el humanoide que mira.

OclusiónEnemiga
Cuando un humanoide está oculto detrás de un objeto visible y su NameOcclusion está configurado en NameOcclusion.EnemyOcclusion, su nombre y vida solo están ocultos de los humanoides enemigos (jugadores en un Team diferente).
En el siguiente escenario, tanto Guardabosques como Octavia están suficientemente ocultos detrás de columnas de piedra, y ambos están configurados como OclusiónEnemiga. El humanoide que mira y Guardabosques están en el mismo Team, por lo que no ocurre oclusión de nombre/vida. Sin embargo, el nombre y la vida de Octavia, en el equipo opuesto, están ocultos.

Modificar las visualizaciones del personaje
Avatares de usuario
Para modificar la visualización del nombre o la vida de cada avatar entrante en un juego, conecta los eventos Players.PlayerAdded y Player.CharacterAdded en un Script y establece propiedades de visualización en el Humanoid del personaje.
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
-- Dar a cada humanoide control total sobre su distancia de visualización de nombre/vida
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Establecer la distancia de visualización del nombre a 20 studs
humanoid.NameDisplayDistance = 20
-- Establecer la distancia de visualización de la barra de vida a 15 studs
humanoid.HealthDisplayDistance = 15
-- Mostrar la barra de vida solo cuando el humanoide está dañado
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
También puedes personalizar propiedades basadas en el Team de un jugador, como establecer todos los jugadores "guardias" 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 "Guardia" genérico
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guardia"
-- Ocultar el nombre para 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 NPC que ya están colocados en el mundo 3D, puedes editar el nombre/vida directamente en el objeto Humanoid en la ventana de Propiedades.


Sobrescribir nombres de visualización
Por defecto, el nombre de visualización de un humanoide coincide con el Nombre de Visualización de la cuenta de Roblox del usuario, que es único y separado de su Nombre de Usuario de cuenta. Para mostrar un nombre totalmente personalizado que no esté relacionado con la cuenta del usuario, puedes sobrescribir la propiedad Humanoid.DisplayName.
Establecer directamente
Puedes establecer la propiedad DisplayName de cualquier instancia de Humanoid a la que obtengas referencia a través de un Script, como el ejemplo de personalización del equipo, o directamente en el objeto Humanoid de un personaje NPC.
Establecer a través de la entrada del usuario
En algunos géneros como el rol o la lucha, puede que desees proporcionar un método para que los usuarios ingresen su propio nombre de personaje, nombre de mascota, etc., que sea específico para la experiencia y no esté ligado al nombre de visualización de su cuenta. Puedes recopilar esta entrada en el lado del cliente a través de un TextBox para la entrada de nombre.

Una vez que se envía la entrada, puedes 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 Humanoid del personaje del usuario.
LocalScript - Activar Evento Remotolocal ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
Script - Asignar Nombre Filtrado
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Crear evento remoto para recibir texto del cliente para filtrado
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)