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 avatar utente che NPC. Quando un Humanoid è presente all'interno di un Model che contiene una parte chiamata 1>Testa1>, Roblox mostra una barra di nome e/o salute sopra quella parte.

Character display information above an in-experience avatar

Attraverso varie proprietà Humanoid, puoi modificare quanto Seguendo:

  • La distanza da cui gli utenti possono vedere il nome/salute di altri umanoidi in relazione al loro personaggio umanoide.
  • Il nome visualizzato che mostra oltre un umanoide.
  • Se la barra di salute di un manichino appare sempre, non appare mai o appare solo quando il manichino è danneggiato.
  • Se i nomi e le barre di salute sono bloccate (nascoste) quando la linea di visione tra la fotocamera e un altro umanoide è bloccata.

Visualizza Proprietà

Tipo di distanza di visualizzazione

La proprietà Humanoid.DisplayDistanceType imposta come gli utenti vedono il nome/la salute di altri personaggi in relazione al loro personaggio.

Visualizzatore

Quando il DisplayDistanceType di un umanoide è impostato su HumanoidDisplayDistanceType.Viewer e Class

Nel seguente scenario, il personaggio dell'utente ( Viewer ) ha un NameDisplayDistance più grande di HealthDisplayDistance , come mostrato dai cerchi. Di Risultato, l'utente vede i nomi dei personaggi per entramb

Soggetto

Quando il DisplayDistanceType di un umanoide è impostato su HumanoidDisplayDistanceType.Subject e

Nell'esempio seguente, sia Watchman che Octavia sono impostati su Soggetto e le loro 2> Class.Humanoid.NameDisplayDistance|NameDisplay 5>範圍5> sono mostrate dai cerchi. Solo il nome 8> Octavia8> viene visto dall'utente il cui personaggio si tro

Nessuno

Quando un humanoid's DisplayDistanceType è impostato su HumanoidDisplayDistanceType.None , la sua barra nome e salute non appare sotto nessuna condizione. Nel seguente scenario, sia Watchman che 1> Octavia1>

Tipo di visualizzazione della salute

La proprietà Humanoid.HealthDisplayType fornisce ulteriori controlli sulla visibilità della barra della salute del personaggio. La barra riflette il Health del personaggio come fattore della sua MaxHealth e cambia colore da verde a giallo a rosso mentre la salute del personaggio diminuisce.

SempreOn

Quando il HealthDisplayType di un umanoide è impostato su HumanoidHealthDisplayType.AlwaysOn, la sua barra della salute appare sempre.

Visualizza quando sei danneggiato

Un humanoid con HealthDisplayType impostato su HumanoidHealthDisplayType.DisplayWhenDamaged mostra solo una

SempreOff

Quando il HealthDisplayType di un umanoide è impostato su HumanoidHealthDisplayType.AlwaysOff, la sua barra di salute non appare mai sotto qualsiasi condizione.

Oclusione

L'occlusione (nascondimento) dei nomi umanoidi dietro le pareti o altri oggetti è controllata dalla proprietà Humanoid.NameOcclusion del Proprietà.

NessunaOcклюzione

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 occluduti dalla visualizzazione degli umanoidi.

Nel seguente scenario, sia Watchman che Octavia sono impostati su NoOcclusion. Anche se entrambi sono abbastanza nascosti dietro le colonne di pietra, l'uomo di visualizzazione vede ancora il loro nome / visualizzazione della salute.

Occlude tutto

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 visualizzazione degli umanoidi.

Nel seguente scenario, sia Watchman che Octavia sono abbastanza nascosti dietro le colonne di pietra. Watchman è impostato su 1> OccludeAll 1> , quindi il suo nome e la sua salute sono nascosti dall'uomo di visualizzazione. 4> Octavia 4> , tuttavia, è impostato su

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 occlusi dai umanoidi nemici (giocatori su un altro Team ) .

Nell'esempio seguente, sia Watchman che Octavia sono abbastanza nascosti dietro le colonne di pietra, e entrambi sono impostati su EnemyOcclusion. Il humanoid di visualizzazione e 2> Watchman2> sono sullo stesso 5> Class.team5>, quindi l'

Modifica i caratteri

Avatar utente

Per modificare il nome o l'esposizione della salute per ogni avatar in un'esperienza, connect the Players.PlayerAdded e Player.CharacterAdded eventi in a Script e imposta 1> proprietà di visualizzazione1> sul personaggio's 4> Class.Humanoid4> .

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 ciascun umanoidi pieno controllo sulla sua distanza di visualizzazione 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 su 15 stud
humanoid.HealthDisplayDistance = 15
-- Mostra solo la barra della salute quando l'uomoide è 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 "guardia" a un nome generico e nascondere i nomi di tutti i giocatori "ninja".

Script - Personalizzazione della squadra

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 tutti i guardie a "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 Mondo3D, puoi modificare direttamente il nome/la salute sull'oggetto Humanoid nella finestra Proprietà.

Sovrascrivi i nomi di visualizzazione

Per impostazione predefinita, il nome visualizzato di un humanoid corrisponde all'account utente Nome visualizzato che è unico e separato dal loro account Nome utente . Per mostrare un nome completamente personalizzato che non è correlato all'Accountdell'utente, puoi sovrascrivere la ProprietàHumanoid.DisplayName.

Impostazione diretta

Puoi impostare la proprietà DisplayName di qualsiasi Humanoid istanza che ottieni riferimento attraverso un Script, come l'esempio 1> personalizzazione della squadra1>, o direttamente su un oggetto 4> umanoido4> del personaggio N

Configurazione tramite input dell'utente

In alcuni generi come il ruoloplay o Combattimento/Combat, potresti voler fornire un metodo per gli utenti per inserire il proprio nome personaggio, il nome del personaggio animale domestico, ecc. che è specifico per l'esperienza e non è legato al loro Nome Visualizzatoaccount. Puoi raccogliere questo input sul lato client attraverso un'entrata TextBox .

Una volta che l'input è inviato, puoi passarlo al server attraverso un evento remoto e quindi, sul lato server, ascolta l'evento remoto e assegna il nome filtrato al personaggio utente.

Script locale - Evento remoto di Fire

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

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Crea un evento remoto per ricevere il testo dal client per il filtro
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)