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.
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)