Instancja Humanoid jest używana do tworzenia modeli postaci, zarówno dla avatarów użytkowników, jak i NPC. Kiedy instancja Humanoid znajduje się w Model, który zawiera część o nazwie Head, Roblox wyświetla imię i/lub pasek zdrowia nad tą częścią.

Dzięki różnym właściwościom Humanoid możesz modyfikować następujące:
- odległość, z jakiej użytkownicy mogą zobaczyć imię/zdrowie innych humanoidów w odniesieniu do własnego humanoida postaci.
- nazwę wyświetlaną, która pokazuje się nad humanoidem.
- Czy pasek zdrowia humanoida zawsze się pojawia, nigdy się nie pojawia, czy pojawia się tylko wtedy, gdy humanoid jest uszkodzony.
- Czy imiona i paski zdrowia są ukryte (niewidoczne), gdy linia wzroku między kamerą a innym humanoidem jest zablokowana.
Właściwości wyświetlania
Typ odległości wyświetlania
Właściwość Humanoid.DisplayDistanceType ustawia, jak użytkownicy widzą imię/zdrowie innych postaci w odniesieniu do własnej postaci.
Viewer
Gdy właściwość DisplayDistanceType humanoida jest ustawiona na HumanoidDisplayDistanceType.Viewer, widzi imię/zdrowie innych humanoidów w zasięgu własnej NameDisplayDistance i HealthDisplayDistance. Można to uznać za najniższy priorytet, ponieważ nie jest brane pod uwagę w przypadku innych humanoidów skonfigurowanych jako subject lub none.
W następującym scenariuszu postać użytkownika (Viewer) ma większą NameDisplayDistance niż HealthDisplayDistance, co pokazują okręgi. W rezultacie użytkownik widzi imiona postaci zarówno Watchman, jak i Octavia, ale widzi pasek zdrowia tylko dla Watchman.

Subject
Gdy właściwość DisplayDistanceType humanoida jest ustawiona na HumanoidDisplayDistanceType.Subject, przejmuje pełną kontrolę nad wyświetlaniem swojego imienia i zdrowia poprzez swoje wartości NameDisplayDistance i HealthDisplayDistance. W efekcie inne humanoidy zobaczą imię/zdrowie podmiotu tylko w zasięgu tych odległości od humanoida subject.
W następującym scenariuszu zarówno Watchman, jak i Octavia są ustawione na Subject, a ich zakresy NameDisplayDistance są pokazane przez okręgi. Tylko imię Octavia jest widoczne dla użytkownika, którego postać znajduje się w jej zasięgu, ale poza zasięgiem humanoida Watchman.

None
Gdy właściwość DisplayDistanceType humanoida jest ustawiona na HumanoidDisplayDistanceType.None, jego imię i pasek zdrowia nie pojawiają się w żadnych okolicznościach. W następującym scenariuszu zarówno Watchman, jak i Octavia są ustawione na None, więc inna postać nie widzi ich imienia ani zdrowia, nawet gdy znajduje się w zasięgu.

Typ wyświetlania zdrowia
Właściwość Humanoid.HealthDisplayType zapewnia dalszą kontrolę nad widocznością paska zdrowia postaci. Pasek odzwierciedla Health humanoida jako czynnik jego MaxHealth i zmienia kolor z zielonego na żółty, a następnie na czerwony, w miarę jak zdrowie humanoida maleje.
AlwaysOn
Gdy właściwość HealthDisplayType humanoida jest ustawiona na HumanoidHealthDisplayType.AlwaysOn, jego pasek zdrowia zawsze się pojawia.

DisplayWhenDamaged
Humanoid z HealthDisplayType ustawionym na HumanoidHealthDisplayType.DisplayWhenDamaged pokazuje pasek zdrowia tylko wtedy, gdy jego Health jest mniejsze niż jego MaxHealth. W następującym scenariuszu Watchman ma pełne zdrowie i nie wyświetla paska zdrowia, ale Octavia jest uszkodzona o 50% i wyświetla żółty pasek zdrowia.

AlwaysOff
Gdy właściwość HealthDisplayType humanoida jest ustawiona na HumanoidHealthDisplayType.AlwaysOff, jego pasek zdrowia nigdy nie pojawia się w żadnych okolicznościach.

Okkluzja
Okkluzja (ukrywanie) imion humanoidów za ścianami lub innymi obiektami jest kontrolowana przez właściwość Humanoid.NameOcclusion postaci.
NoOcclusion
Gdy humanoid jest ukryty za widocznym obiektem i jego NameOcclusion jest ustawione na NameOcclusion.NoOcclusion, jego imię i zdrowie nigdy nie są ukryte przed widocznymi humanoidami.
W następującym scenariuszu zarówno Watchman, jak i Octavia są ustawione na NoOcclusion. Chociaż obie są wystarczająco ukryte za kamiennymi kolumnami, humanoid wpatrujący się nadal widzi ich wyświetlanie imienia/zdrowia.

OccludeAll
Gdy humanoid jest ukryty za widocznym obiektem i jego NameOcclusion jest ustawione na NameOcclusion.OccludeAll, jego imię i zdrowie są zawsze ukryte przed widocznymi humanoidami.
W następującym scenariuszu zarówno Watchman, jak i Octavia są wystarczająco ukryte za kamiennymi kolumnami. Watchman jest ustawiony na OccludeAll, więc jego imię i zdrowie są ukryte przed obserwującym humanoidem. Octavia jednak jest ustawiona na NoOcclusion i jej imię/zdrowie pozostaje widoczne dla obserwującego humanoida.

EnemyOcclusion
Gdy humanoid jest ukryty za widocznym obiektem i jego NameOcclusion jest ustawione na NameOcclusion.EnemyOcclusion, jego imię i zdrowie są ukryte tylko przed wrogimi humanoidami (graczami w innej Team).
W następującym scenariuszu zarówno Watchman, jak i Octavia są wystarczająco ukryte za kamiennymi kolumnami, a obie są ustawione na EnemyOcclusion. Obserwujący humanoid i Watchman są w tej samej Team, więc okkluzja imienia/zdrowia nie występuje. Jednak imię i zdrowie Octavia, będącej w przeciwnej drużynie, są ukryte.

Modyfikacja wyświetlania postaci
Awatary użytkowników
Aby zmodyfikować wyświetlanie imienia lub zdrowia dla każdego nadchodzącego avatara w grze, połącz zdarzenia Players.PlayerAdded i Player.CharacterAdded w Script i ustaw właściwości wyświetlania na Humanoid postaci.
Skrypt - Globalna personalizacja
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Daj każdemu humanoidowi pełną kontrolę nad odległością wyświetlania imienia/zdrowia
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Ustaw odległość wyświetlania imienia na 20 studów
humanoid.NameDisplayDistance = 20
-- Ustaw odległość wyświetlania paska zdrowia na 15 studów
humanoid.HealthDisplayDistance = 15
-- Pokaż pasek zdrowia tylko wtedy, gdy humanoid jest uszkodzony
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Możesz również dostosować właściwości w zależności od Team gracza, na przykład, ustawiając wszystkich graczy "strażników" na uniwersalne imię, a ukrywając imiona wszystkich graczy "ninja".
Skrypt - Personalizacja drużyny
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Ustaw imię wszystkich strażników na uniwersalne "Guard"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Ukryj imię dla wszystkich ninja
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Postacie NPC
Dla postaci NPC już umieszczonych w świecie 3D możesz edytować imię/zdrowie bezpośrednio na obiekcie Humanoid w oknie Właściwości.


Nadpisywanie nazw wyświetlania
Domyślnie nazwa wyświetlana humanoida odpowiada Nazwie Wyświetlanej konta Roblox użytkownika, która jest unikalna i oddzielona od ich Nazwa Użytkownika. Aby pokazać w pełni dostosowaną nazwę, która nie ma związku z kontem użytkownika, możesz nadpisać właściwość Humanoid.DisplayName.
Ustaw bezpośrednio
Możesz ustawić właściwość DisplayName dowolnej instancji Humanoid, do której uzyskasz odniesienie przez Script, na przykład w przypadku personalizacji drużyny, lub bezpośrednio na obiekcie Humanoid postaci NPC.
Ustaw za pomocą wejścia od użytkownika
W niektórych gatunkach, takich jak odgrywanie ról czy walki, możesz chcieć zapewnić sposób, aby użytkownicy mogli wpisać własne imię postaci, imię zwierzaka itp., które jest specyficzne dla doświadczenia i nie jest powiązane z ich nazwą wyświetlaną konta. Możesz zebrać te dane wejściowe po stronie klienta za pomocą TextBox.

Po przesłaniu danych wejściowych możesz przekazać je do serwera za pomocą zdarzenia zdalnego, a następnie, po stronie serwera, nasłuchiwać na to zdarzenie zdalne i przypisać przefiltrowaną nazwę do Humanoid postaci użytkownika.
LocalScript - Wyślij zdarzenie zdalnelocal ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
Skrypt - Przypisz przefiltrowaną nazwę
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Utwórz zdarzenie zdalne do odbierania tekstu od klienta do filtrowania
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)