Nome del personaggio/visualizzazione della salute

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

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.

Character display information above an in-experience avatar

Attraverso varie proprietà Humanoid puoi modificare quanto Seguendo:

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)