L'istanza Humanoid è utilizzata per creare modelli di personaggi, sia per avatar utente che per NPC. Quando un Humanoid è presente all'interno di un Model che contiene una parte chiamata Head, Roblox visualizza un nome e/o una barra della salute sopra quella parte.

Attraverso varie proprietà di Humanoid, puoi modificare quanto segue:
- La distanza da cui gli utenti possono vedere il nome/la salute di altri umanoidi in relazione all'umanoide del proprio personaggio.
- Il nome visualizzato che appare sopra un umanoide.
- Se la barra della salute di un umanoide appare sempre, mai oppure solo quando l'umanoide è danneggiato.
- Se i nomi e le barre della salute sono occlusi (nascosti) quando la linea di vista tra la telecamera e un altro umanoide è bloccata.
Proprietà di visualizzazione
Tipo di distanza di visualizzazione
La proprietà Humanoid.DisplayDistanceType imposta come gli utenti vedono il nome/la salute di altri personaggi in relazione al proprio personaggio.
Visualizzatore
Quando il DisplayDistanceType di un umanoide è impostato su HumanoidDisplayDistanceType.Viewer, vede il nome/la salute di altri umanoidi entro il raggio della sua NameDisplayDistance e HealthDisplayDistance. Puoi considerare questo il livello di priorità più basso poiché non viene preso in considerazione per altri umanoidi configurati come soggetto o nessuno.
Nello scenario seguente, il personaggio dell'utente (Viewer) ha una NameDisplayDistance maggiore di HealthDisplayDistance, come indicato dai cerchi. Di conseguenza, l'utente vede i nomi dei personaggi di Watchman e Octavia, ma vede solo una barra della salute per Watchman.

Soggetto
Quando il DisplayDistanceType di un umanoide è impostato su HumanoidDisplayDistanceType.Subject, prende il pieno controllo sulla visualizzazione del proprio nome e della salute tramite i valori di NameDisplayDistance e HealthDisplayDistance. In pratica, altri umanoidi vedranno solo il nome/la salute del soggetto entro quelle distanze dall'umanoide soggetto.
Nello scenario seguente, sia Watchman che Octavia sono impostati su Subject e i loro intervalli di NameDisplayDistance sono indicati dai cerchi. Solo il nome Octavia viene visto dall'utente il cui personaggio si trova all'interno del suo intervallo ma al di fuori dell'intervallo dell'umanoide Watchman.

Nessuno
Quando il DisplayDistanceType di un umanoide è impostato su HumanoidDisplayDistanceType.None, il suo nome e la sua barra della salute non appaiono in nessuna circostanza. Nello scenario seguente, sia Watchman che Octavia sono impostati su None, quindi l'altro personaggio non vede il proprio nome o la propria salute anche quando è in zona.

Tipo di visualizzazione della salute
La proprietà Humanoid.HealthDisplayType offre un ulteriore controllo sulla visibilità della barra della salute del personaggio. La barra riflette la Health dell'umanoide come fattore della sua MaxHealth e cambia colore da verde a giallo a rosso man mano che la salute dell'umanoide diminuisce.
SempreAccesa
Quando il HealthDisplayType di un umanoide è impostato su HumanoidHealthDisplayType.AlwaysOn, la sua barra della salute appare sempre.

VisualizzaQuandoDanneggiato
Un umanoide con HealthDisplayType impostato su HumanoidHealthDisplayType.DisplayWhenDamaged mostra solo una barra della salute quando la sua Health è inferiore alla sua MaxHealth. Nello scenario seguente, Watchman ha la salute piena e non visualizza una barra della salute, ma Octavia è danneggiata del 50% e visualizza una barra della salute gialla.

SempreSpenta
Quando il HealthDisplayType di un umanoide è impostato su HumanoidHealthDisplayType.AlwaysOff, la sua barra della salute non appare in nessuna circostanza.

Occlusione
L'occlusione (nascosta) dei nomi degli umanoidi dietro muri o altri oggetti è controllata dalla proprietà Humanoid.NameOcclusion del personaggio.
NessunaOcclusione
Quando un umanoide è nascosto dietro un oggetto visibile e la sua NameOcclusion è impostata su NameOcclusion.NoOcclusion, il suo nome e la sua salute non sono mai occlusi dalla visione degli umanoidi.
Nello scenario seguente, sia Watchman che Octavia sono impostati su NoOcclusion. Anche se entrambi sono sufficientemente nascosti dietro colonne di pietra, l'umanoide che osserva vede ancora le loro visualizzazioni del nome e della salute.

OccludeAll
Quando un umanoide è nascosto dietro un oggetto visibile e la sua NameOcclusion è impostata su NameOcclusion.OccludeAll, il suo nome e la sua salute sono sempre occlusi dalla visione degli umanoidi.
Nello scenario seguente, sia Watchman che Octavia sono sufficientemente nascosti dietro colonne di pietra. Watchman è impostato su OccludeAll, quindi il suo nome e la sua salute sono nascosti dall'umanoide in osservazione. Octavia, tuttavia, è impostata su NoOcclusion e il suo nome/benessere rimane visibile all'umanoide visualizzatore.

EnemyOcclusion
Quando un umanoide è nascosto dietro un oggetto visibile e la sua NameOcclusion è impostata su NameOcclusion.EnemyOcclusion, il suo nome e la sua salute sono occlusi solo dagli umanoidi nemici (giocatori di un Team diverso).
Nello scenario seguente, sia Watchman che Octavia sono sufficientemente nascosti dietro colonne di pietra, e entrambi sono impostati su EnemyOcclusion. L'umanoide in osservazione e Watchman sono nella stessa Team, quindi non si verifica alcuna occlusione di nome/salute. Tuttavia, il nome e la salute di Octavia, appartenente al team opposto, sono occlusi.

Modificare le visualizzazioni dei personaggi
Avatar utente
Per modificare la visualizzazione del nome o della salute per ogni avatar in arrivo in un gioco, collega gli eventi Players.PlayerAdded e Player.CharacterAdded in un Script e imposta le proprietà di visualizzazione sull' Humanoid del personaggio.
Script - Personalizzazione Globale
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Dare a ciascun umanoide il pieno controllo sulla distanza di visualizzazione del nome/salute
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Imposta la distanza di visualizzazione del nome a 20 stud
humanoid.NameDisplayDistance = 20
-- Imposta la distanza di visualizzazione della barra della salute a 15 stud
humanoid.HealthDisplayDistance = 15
-- Mostra la barra della salute solo quando l'umanoide è danneggiato
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Puoi anche personalizzare le proprietà in base alla Team di un giocatore, ad esempio impostando tutti i giocatori "guardia" su un nome generico e nascondendo i nomi di tutti i giocatori "ninja".
Script - Personalizzazione del Team
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Imposta il nome di tutte le guardie su "Guardia" generico
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Nascondi il nome per tutti i ninja
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Personaggi NPC
Per i personaggi NPC già posizionati nel mondo 3D, puoi modificare il nome/la salute direttamente sull'oggetto Humanoid nella finestra Proprietà.


Sovrascrivere i nomi visualizzati
Per impostazione predefinita, il nome visualizzato di un umanoide corrisponde al Nome Visualizzato dell'account Roblox dell'utente, che è unico e separato dal Nome Utente del loro account. Per mostrare un nome completamente personalizzato che non sia correlato all'account dell'utente, puoi sovrascrivere la proprietà Humanoid.DisplayName.
Imposta direttamente
Puoi impostare la proprietà DisplayName di qualsiasi istanza di Humanoid a cui accedi tramite un Script, come nell'esempio di personalizzazione del team, o direttamente sull'oggetto Humanoid di un personaggio NPC.
Imposta tramite input dell'utente
In alcuni generi, come il gioco di ruolo o il combattimento, potresti voler fornire un metodo per gli utenti di inserire il proprio nome del personaggio, nome del personaggio animale, ecc., specifico per l'esperienza e non legato al loro nome visualizzato dell'account. Puoi raccogliere questo input sul lato client tramite un TextBox per l'inserimento del nome.

Una volta inviato l'input, puoi passarlo al server tramite un evento remoto e poi, sul lato server, ascoltare l'evento remoto e assegnare il nome filtrato all' Humanoid del personaggio utente.
LocalScript - Attiva Evento Remotolocal ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
Script - Assegna Nome Filtrato
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Crea evento remoto per ricevere testo dal client per il filtraggio
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)