Die Humanoid Instanz wird verwendet, um Charaktermodelle für Benutzeravatare und NPCs zu erstellen. Wenn ein Humanoid in einem Model mit dem Namen 2>Kopf2> vorhanden ist, zeigt Roblox einen Namen und/oder Gesundheitsleiste über dieser parte.
Durch verschiedene Humanoid-Eigenschaften können Sie die gefolgte ProfileDinge modifizieren:
- Die Entfernung, von der Benutzer den Namen/die Gesundheit anderer Humanoiden in Bezug auf ihren eigenen Charakter sehen können.
- Der Displayname, der über einem Humanoiden angezeigt wird.
- Ob die Gesundheitsleiste eines Humanoids immer angezeigt wird, nie angezeigt wird oder nur angezeigt wird, wenn der Humanoid beschädigt wird.
- Ob Namen und Gesundheitsleisten verschleiert sind (versteckt), wenn die Sichtlinie zwischen der Kamera und einem anderen Humanoid blockiert ist.
Anzeigeprotokolle
Anzeigungs距anztyp
Die Humanoid.DisplayDistanceType Eigenschaften legen fest, wie Benutzer den Namen/die Gesundheit anderer Charaktere in Bezug auf ihren eigenen Charakter sehen.
Ansicht
Wenn ein Humanoid의 DisplayDistanceType auf HumanoidDisplayDistanceType.Viewer und Class.Humanoid.HealthDisplayDistance
Im folgenden Szenario hat der Benutzer seinen Charakter ( Viewer ) ein größeres NameDisplayDistance als HealthDisplayDistance, wie in den Kreisen angezeigt. Ergebnissieht der Benutzer die Charakternamen für beide <
Thema
Wenn ein Humanoid의 DisplayDistanceType auf HumanoidDisplayDistanceType.Subject gesetzt ist, erfordert es eine volle Kont
Im folgenden Szenario sind beide Watchman und Octavia auf Subjekt eingestellt, und ihre 1> Class.Humanoid.NameDisplayDistance|NameDisplayDistance -Reichweite werden durch die Kreise dargestellt. Nur der Name4> Octavia 4> wird vom Benutzer gesehen, der sich in ihrem Reichweite befindet, aber nicht in
Keine
Wenn ein Humanoid의 DisplayDistanceType auf HumanoidDisplayDistanceType.None eingestellt ist, erscheinen seine Namens- und Gesundheitsleiste unter keinen Bedingungen. Im folgenden Szenario sind sowohl Watchman als auch
Gesundheitsanzeigetyp
Die Eigenschaft Humanoid.HealthDisplayType bietet weitere Kontrolle über die Sichtbarkeit der Gesundheitsleiste des Charakters. Die Leiste reflektiert den Gesundheitszustand des Humanoiden als Faktor seines Health und ändert die Farbe von grün zu gelb, um die Gesundheit des Humanoiden zu verringern.
Immer an
Wenn ein Humanoid의 HealthDisplayType auf HumanoidHealthDisplayType.AlwaysOn eingestellt ist, erscheint seine Gesundheitsleiste immer.
Anzeigen, wenn beschädigt
Ein Humanoid mit HealthDisplayType set to HumanoidHealthDisplayType.DisplayWhenDamaged only shows a Gesundheitsle
ImmerOff
Wenn ein Humanoid의 HealthDisplayType auf HumanoidHealthDisplayType.AlwaysOff eingestellt ist, erscheint seine Gesundheitsleiste unter keinen Bedingungen jemals.
Okklusion
Die Verklusion (Versteckung) von menschlichen Namen hinter Wänden oder anderen Objekten wird durch die Eigenschaft Humanoid.NameOcclusion des Charakters kontrolliert.
Keine Occlusion
Wenn ein Humanoid hinter einem sichtbaren Objekt versteckt ist und seine NameOcclusion auf NameOcclusion.NoOcclusion eingestellt ist, ist sein Name und seine Gesundheit niemals von der Ansicht von Humanoiden ausblendbar.
Im folgenden Szenario sind beide Watchman und Octavia auf NoOcclusion eingestellt. Obwohl beide ausreichend hinter den Stein-Säulen versteckt sind, zeigt der Ansichts-Humanoid immer noch ihren Namen/Gesundheitsanzeigen.
Alle ausschließen
Wenn ein Humanoid hinter einem sichtbaren Objekt versteckt ist und seine NameOcclusion auf NameOcclusion.OccludeAll eingestellt ist, ist sein Name und seine Gesundheit immer verborgen, wenn man Humanoiden anzeigt.
Im folgenden Szenario sind beide Watchman und Octavia ausreichend versteckt hinter den Steinkolben. Watchman ist auf 1> OccludeAll 1> eingestellt, so dass sein Name und seine Gesundheit vom Ansichtsfaktor versteckt sind. 4> Octavia 4> ist jedoch auf 7> NoOcclusion
Feindliche Oklusion
Wenn ein Humanoid hinter einem sichtbaren Objekt versteckt ist und seine NameOcclusion auf NameOcclusion.EnemyOcclusion eingestellt ist, sind sein Name und seine Gesundheit nur von feindlichen Humanoiden (Spieler auf einer anderen Team ) verborgen.
Im folgenden Szenario sind beide Watchman und Octavia ausreichend versteckt hinter den Steinkolonnen, und beide sind auf EnemyOcclusion eingestellt. Der Ansichts-Humanoid und 1> Watchman1> befinden sich auf demselben 4> Class.Team 4>, sod
Charakteranzeigen modifizieren
Benutzer-Avatare
Um den Namen oder Gesundheitszustand für jeden eingehenden Avatar in einem Erlebnis zu ändern, verbinden Sie die Players.PlayerAdded und Player.CharacterAdded Ereignisse in einem Script und setzen Sie 2>Anzeigeeigenschaften2> auf dem Charakter 5>Class.Humanoid5>.
Script - Globaler Anpassung
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Geben Sie jedem Humanoiden vollständige Kontrolle über seine Namens-/Gesundheitsanzeige
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Setzen Sie die Namensschild-Anzeige距anz auf 20 Studs
humanoid.NameDisplayDistance = 20
-- Setzen Sie die Gesundheitsleiste-Anzeigungsreichweite auf 15 Studs
humanoid.HealthDisplayDistance = 15
-- Zeige nur die Gesundheitsleiste, wenn das Humanoid beschädigt ist
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Du kannst auch Eigenschaften basierend auf einem Spieler:in's Team anpassen, wie z. B. alle "Guard"-Spieler in einen generischen Namen zu setzen und die Namen aller "Ninja"-Spieler ausblenden.
Script - Team Anpassung
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Setzen Sie den Namen aller Wachen auf "Guard"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Verberge den Namen für alle Ninjas
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
NPC-Charaktere
Für NPC-Charaktere, die bereits in der 3D-Welt platziert sind, können Sie den Namen/die Gesundheit direkt auf dem Humanoid-Objekt im Eigenschaften-Fenster bearbeiten.
Übersteuern von Display-Namen
Standardmäßig entspricht der Anzeigename eines Humanoiden dem Roblox-Konto des Benutzers Anzeigename , das einzigartig und separat von ihrem Konto Benutzername ist. Um einen vollständig benutzerdefinierten Namen, der nicht mit dem Benutzerkonto verwandt ist, anzuzeigen, kannst du die EigenschaftenClass.Humanoid.DisplayName überschreiben.
Direkt einstellen
Du kannst die DisplayName Eigenschaft von jedem Humanoid Instanz, zu der du über einen Script direkt auf ein 1> NPC-Charakter1>-Objekt oder indirekt auf ein 4>Humanoid-Objekt4>-Objekt zugreifst, wie das Beispiel für
Einstellung durch Benutzer-Eingabe
In einigen Genres wie Rollenspielen oder Kampfmöchten Sie vielleicht eine Methode bereitstellen, damit Benutzer ihren eigenen Charakternamen, Haustiernamen usw. eingeben können, der spezifisch für das Erlebnis ist und nicht an ihrem Konto-Anzeigename gebunden ist. Sie können diesen Eingang auf der Client-Seite über einen TextBox-Namenseintrag sammeln.
Sobald das Eingabe abgeschickt ist, kannst du es dem Server über ein Remote-Ereignis und dann auf der Serverseite auf das Remote-Ereignis hören und dem Benutzercharakter den gefilterten Namen zuweisen.
Lokales Skript - Feuer-Remote-Ereignis
local ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
Script - Filtered Name zuweisen
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Erstellen Sie ein Remote-Ereignis, um Text vom Client zum Filtern zu erhalten
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)