L'istanza Humanoid viene utilizzata per creare modelli di personaggio, sia per gli avatar degli utenti che per i PNJ.Quando un Humanoid è presente all'interno di un Model che contiene una parte chiamata Testa , Roblox mostra un nome e/o una barra di salute sopra quella parte.

Attraverso varie proprietà Humanoid puoi modificare quanto Seguendo:
- Il nome di visualizzazione che mostra sopra un umanoide.
- Se la barra della salute di un umanoide appare sempre, mai o solo quando l'umanode è danneggiato.
- Se i nomi e le barre di salute sono occluse (nascoste) quando la linea di visione tra la fotocamera e un altro umanoide è bloccata.
Mostra proprietà
inserisci / scrividi 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 un umanoide viene impostato su , vede il nome/la salute di altri umanoidi entro il raggio del proprio e .Puoi considerare questa la priorità più bassa poiché non viene presa in considerazione per altri umanoidi configurati come oggetto o nessuno.
Nello scenario seguente, il personaggio dell'utente ( Visualizzatore ) ha una dimensione maggiore di NameDisplayDistance rispetto a HealthDisplayDistance come indicato dai cerchi.Di Risultato, l'utente vede i nomi dei personaggi per entrambi Watchman e Octavia , ma vede solo una barra della salute per Watchman .

Oggetto
Quando un umanoide di DisplayDistanceType è impostato su HumanoidDisplayDistanceType.Subject , prende pieno controllo sul proprio nome e sulla visualizzazione della salute attraverso i suoi NameDisplayDistance e HealthDisplayDistance valori.In effetti, altri umanoidi vedranno solo il nome/la salute del soggetto entro quelle distanze dal soggetto umanoide.
Nello scenario seguente, sia Watchman che Octavia sono impostati su Oggetto e le loro NameDisplayDistance gamme sono indicate dai cerchi.Solo il nome Octavia è visto dall'utente il cui personaggio sta all'interno della sua portata ma al di fuori della portata dell' Watchman umanoide.

Nessuno
Quando un umanoide DisplayDistanceType è impostato su HumanoidDisplayDistanceType.None, il suo nome e la barra della salute non appaiono in nessun caso.Nello scenario seguente, sia Watchman che Octavia sono impostati su Nessuno , quindi l'altro personaggio non vede il loro nome o la salute anche quando è a portata.

inserisci / scrividi visualizzazione della salute
La proprietà Humanoid.HealthDisplayType fornisce ulteriore controllo sulla visibilità della barra della salute del personaggio.La barra riflette il Health dell'umanoide come un fattore della sua MaxHealth e cambia colore da verde a giallo a rosso man mano che la salute dell'umanoide diminuisce.
Sempre attivo
Quando la barra della salute di un umanoide è impostata su , la sua barra della salute appare sempre.

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

Sempre disattivato
Quando la barra della salute di un umanoide è impostata su , la sua salute non appare mai in nessuna circostanza.

Occlusione
L'occlusione (nascondimento) dei nomi umanoidi dietro le pareti o altri oggetti è controllata dalla ProprietàHumanoid.NameOcclusion del personaggio.
NoOclusione
Quando un umanoide è nascosto dietro un oggetto visibile e il suo NameOcclusion è impostato su NameOcclusion.NoOcclusion, il suo nome e la sua salute non sono mai occultati dalla visione degli umanoidi.
Nello scenario seguente, sia Watchman che Octavia sono impostati su NoOcclusion .Sebbene entrambi siano sufficientemente nascosti dietro le colonne di pietra, l'umanoide di visione vede ancora i loro nomi/display di salute.

OccludeTutto
Quando un umanoide è nascosto dietro un oggetto visibile e il suo NameOcclusion è impostato su NameOcclusion.OccludeAll, il suo nome e la sua salute sono sempre occultati 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'oid umano di visione. Octavia , tuttavia, è impostata su NoOcclusion e il suo nome/salute rimane visibile all'oido umano in visione.

Occlusione nemica
Quando un umanoide è nascosto dietro un oggetto visibile e il suo NameOcclusion è impostato su NameOcclusion.EnemyOcclusion , il suo nome e la sua salute sono solo occultati dagli umanoidi nemici (giocatori su un diverso Team ).
Nello scenario seguente, sia Guardiano che Octavia sono sufficientemente nascosti dietro colonne di pietra e entrambi sono impostati su EnemyOcclusion .L'osservazione umanoide e Watchman sono sullo stesso Team, quindi l'occlusione nome/salute non si Si verificano.Tuttavia, il nome e la salute di Octavia , sulla teamavversaria, sono occlusi.

Modifica la visualizzazione dei personaggi
Avatar degli utenti
Per modificare il nome o la visualizzazione della salute per ogni avatar in arrivo in un'esperienza, connect the Players.PlayerAdded and Player.CharacterAdded events in a Script and set proprietà di visualizzazione sul personaggio di Humanoid .
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
-- Dai a ogni umanoide pieno controllo sul nome/distanza di visualizzazione della salute
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Imposta la distanza di visualizzazione del nome a 20 studs
humanoid.NameDisplayDistance = 20
-- Imposta la distanza di visualizzazione della barra della salute a 15 studs
humanoid.HealthDisplayDistance = 15
-- Mostra solo la barra della salute quando l'umanoide è danneggiato
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Puoi anche personalizzare le proprietà in base al Team di un Giocatore, come impostare tutti i giocatori "guard" a un nome generico e nascondere 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 a generico "Guard"
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 Mondo3D, puoi modificare il nome/la salute direttamente sull'oggetto Humanoid nella finestra Proprietà.


Sovrascrivere i nomi di visualizzazione
Per impostazione predefinita, il nome visualizzato di un umanoide corrisponde all'account Roblox dell'utente Nome visualizzato che è unico e separato dal suo account Nome utente .Per mostrare un nome completamente personalizzato che non è correlato all'Accountdell'utente, puoi sovrascrivere la ProprietàHumanoid.DisplayName.
Impostare direttamente
Puoi impostare la proprietà DisplayName di qualsiasi Humanoid istanza che ottieni riferimento attraverso un Script , come l'esempio di personalizzazione del team o direttamente su un oggetto Humanoid di un personaggio NPC .
Impostato attraverso l'input dell'utente
In alcuni generi come il ruolo o il Combattimento/Combat, potresti voler fornire un metodo per gli utenti di inserire il proprio nome di personaggio, il nome del personaggio animale, ecc.che è specifico per l'esperienza e non è legato al nome di visualizzazione del loro account.Puoi raccogliere questo input sul lato client attraverso un'entrata di nome TextBox .

Una volta che l'input è stato inviato, puoi passarlo al server attraverso un evento remoto remoto e quindi, sul lato server, ascolta l'evento remoto e assegna il nome filtrato al personaggio utente Humanoid.
Script locale - Evento remoto di fuoco
local ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
Script - Assegna il nome filtrato
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Crea evento remoto per ricevere il testo dal client per la filtrazione
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)