L'instance Humanoid est utilisée pour créer des modèles de personnages, tant pour les avatars des utilisateurs que pour les PNJ. Lorsqu'un Humanoid est présent à l'intérieur d'un Model contenant une pièce nommée Head, Roblox affiche un nom et/ou une barre de santé au-dessus de cette pièce.

Grâce à diverses propriétés de Humanoid, vous pouvez modifier les éléments suivants :
- La distance à partir de laquelle les utilisateurs peuvent voir le nom/la santé des autres humanoïdes par rapport à l'humanoïde de leur propre personnage.
- Le nom d'affichage qui s'affiche au-dessus d'un humanoïde.
- Si la barre de santé d'un humanoïde apparaît toujours, n'apparaît jamais ou n'apparaît que lorsque l'humanoïde est endommagé.
- Si les noms et les barres de santé sont occlus (cachés) lorsque la ligne de vue entre la caméra et un autre humanoïde est bloquée.
Propriétés d'affichage
Type de distance d'affichage
La propriété Humanoid.DisplayDistanceType définit la manière dont les utilisateurs voient le nom/la santé des autres personnages par rapport à leur propre personnage.
Viewer
Lorsque le DisplayDistanceType d'un humanoïde est défini sur HumanoidDisplayDistanceType.Viewer, il voit le nom/la santé des autres humanoïdes dans la portée de son propre NameDisplayDistance et HealthDisplayDistance. Vous pouvez considérer cela comme la priorité la plus basse puisque cela n'est pas pris en compte pour les autres humanoïdes configurés comme subject ou none.
Dans le scénario suivant, le personnage de l'utilisateur (Viewer) a une NameDisplayDistance plus grande que celle de HealthDisplayDistance, comme l'indiquent les cercles. En conséquence, l'utilisateur voit les noms des personnages à la fois Watchman et Octavia, mais ne voit qu'une barre de santé pour Watchman.

Subject
Lorsque le DisplayDistanceType d'un humanoïde est défini sur HumanoidDisplayDistanceType.Subject, il a un contrôle total sur son propre nom et son affichage de santé via ses valeurs NameDisplayDistance et HealthDisplayDistance. Effectivement, les autres humanoïdes ne verront le nom/la santé du sujet que dans ces distances depuis l'humanoïde sujet.
Dans le scénario suivant, Watchman et Octavia sont définis sur Subject et leurs plages de NameDisplayDistance sont indiquées par les cercles. Seul le nom Octavia est vu par l'utilisateur dont le personnage se trouve à l'intérieur de sa portée mais à l'extérieur de celle de l'humanoïde Watchman.

None
Lorsque le DisplayDistanceType d'un humanoïde est défini sur HumanoidDisplayDistanceType.None, son nom et sa barre de santé n'apparaissent dans aucun cas. Dans le scénario suivant, Watchman et Octavia sont tous deux définis sur None, donc l'autre personnage ne voit ni son nom ni sa santé même lorsqu'il est à portée.

Type d'affichage de la santé
La propriété Humanoid.HealthDisplayType fournit un contrôle supplémentaire sur la visibilité de la barre de santé du personnage. La barre reflète la Health de l'humanoïde en fonction de sa MaxHealth et elle change de couleur du vert au jaune puis au rouge à mesure que la santé de l'humanoïde diminue.
AlwaysOn
Lorsque le HealthDisplayType d'un humanoïde est défini sur HumanoidHealthDisplayType.AlwaysOn, sa barre de santé apparaît toujours.

DisplayWhenDamaged
Un humanoïde avec HealthDisplayType défini sur HumanoidHealthDisplayType.DisplayWhenDamaged n'affiche une barre de santé que lorsque sa Health est inférieure à sa MaxHealth. Dans le scénario suivant, Watchman a une santé complète et n'affiche pas de barre de santé, mais Octavia a subi 50 % de dégâts et affiche une barre de santé jaune.

AlwaysOff
Lorsque le HealthDisplayType d'un humanoïde est défini sur HumanoidHealthDisplayType.AlwaysOff, sa barre de santé n'apparaît jamais dans aucun cas.

Occlusion
L'occlusion (caché) des noms des humanoïdes derrière des murs ou d'autres objets est contrôlée par la propriété Humanoid.NameOcclusion du personnage.
NoOcclusion
Lorsque qu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est défini sur NameOcclusion.NoOcclusion, son nom et sa santé ne sont jamais occlus de la vue des humanoïdes.
Dans le scénario suivant, Watchman et Octavia sont tous deux définis sur NoOcclusion. Bien qu'ils soient suffisamment cachés derrière des colonnes en pierre, l'humanoïde qui regarde voit encore leurs affichages de nom/de santé.

OccludeAll
Lorsque qu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est défini sur NameOcclusion.OccludeAll, son nom et sa santé sont toujours occultés de la vue des humanoïdes.
Dans le scénario suivant, Watchman et Octavia sont assez cachés derrière des colonnes en pierre. Watchman est défini sur OccludeAll, donc son nom et sa santé sont cachés de l'humanoïde en vue. Octavia, cependant, est définie sur NoOcclusion et son nom/sa santé reste visible pour l'humanoïde en vue.

EnemyOcclusion
Lorsque qu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est défini sur NameOcclusion.EnemyOcclusion, son nom et sa santé ne sont occultés que des humanoïdes ennemis (joueurs dans une Team différente).
Dans le scénario suivant, Watchman et Octavia sont suffisamment cachés derrière des colonnes en pierre, et tous deux sont définis sur EnemyOcclusion. L'humanoïde en vue et Watchman sont dans la même Team, donc l'occlusion de nom/de santé ne se produit pas. Cependant, le nom et la santé de Octavia, dans l'équipe adverse, sont occultés.

Modifier les affichages des personnages
Avatars utilisateurs
Pour modifier l'affichage du nom ou de la santé de chaque avatar entrant dans un jeu, connectez les événements Players.PlayerAdded et Player.CharacterAdded dans un Script et définissez les propriétés d'affichage sur le Humanoid du personnage.
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Donnez à chaque humanoïde un contrôle total sur sa distance d'affichage de nom/de santé
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Définissez la distance d'affichage de nom à 20 studs
humanoid.NameDisplayDistance = 20
-- Définissez la distance d'affichage de la barre de santé à 15 studs
humanoid.HealthDisplayDistance = 15
-- N'affichez la barre de santé que lorsque l'humanoïde est endommagé
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)Vous pouvez également personnaliser les propriétés en fonction de l'équipe d'un joueur Team, par exemple en définissant tous les joueurs "gardes" à un nom générique, et en cachant les noms de tous les joueurs "ninja".
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Définissez le nom de tous les gardes sur "Garde" générique
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Cachez le nom pour tous les ninjas
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)Personnages PNJ
Pour les personnages PNJ déjà placés dans le monde 3D, vous pouvez modifier le nom/la santé directement sur l'objet Humanoid dans la fenêtre Propriétés.


Remplacer les noms d'affichage
Par défaut, le nom d'affichage d'un humanoïde correspond au Nom d'affichage du compte Roblox de l'utilisateur, qui est unique et distinct de son Nom d'utilisateur de compte. Pour afficher un nom entièrement personnalisé qui n'est pas lié au nom d'affichage du compte de l'utilisateur, vous pouvez remplacer la propriété Humanoid.DisplayName.
Définir directement
Vous pouvez définir la propriété DisplayName de n'importe quelle instance Humanoid à laquelle vous obtenez référence via un Script, comme dans l'exemple de personnalisation d'équipe, ou directement sur l'objet Humanoid d'un personnage PNJ.
Définir par le biais de saisie utilisateur
Dans certains genres comme le jeu de rôle ou le combat, vous souhaiterez peut-être fournir une méthode pour que les utilisateurs saisissent leur propre nom de personnage, nom d'animal de compagnie, etc. qui soit spécifique à l'expérience et ne soit pas lié à leur nom d'affichage de compte. Vous pouvez rassembler cette saisie du côté client via un TextBox pour l'entrée de nom.

Une fois que l'entrée est soumise, vous pouvez la transmettre au serveur via un événement distant et ensuite, du côté serveur, écouter l'événement distant et assigner le nom filtré à Humanoid du personnage de l'utilisateur.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Créer un événement distant pour recevoir du texte du client pour le filtrage
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)