Nom/affichage de la santé du personnage

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

L'instance Humanoid est utilisée pour créer des modèles de personnages, à la fois pour les avatars d'utilisateur et les PNJ.Lorsqu'un Humanoid est présent à l'intérieur d'un Model contenant une partie nommée Tête , Roblox affiche un nom et/ou une barre de santé au-dessus de cette partie.

Character display information above an in-experience avatar

Grâce à diverses propriétés Humanoid, vous pouvez modifier ce qui suivre:

Afficher les propriétés

Afficher le taperde distance

La propriété Humanoid.DisplayDistanceType définit la façon dont les utilisateurs voient le nom/la santé des autres personnages par rapport à leur propre personnage.

Afficheur

Lorsque le DisplayDistanceType d'un humanoïde est réglé 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 envisager ceci comme la priorité la plus basse puisqu'il n'est pas pris en compte pour d'autres humanoïdes configurés comme sujet ou aucun .

Dans le scénario suivant, le personnage de l'utilisateur ( Viewer ) a un plus grand NameDisplayDistance que HealthDisplayDistance , comme indiqué par les cercles.Par resultats, l'utilisateur voit les noms de caractères pour les deux Watchman et Octavia , mais ne voit qu'une barre de santé pour Watchman .

Sujet

Lorsque le d'un humanoïde est réglé sur , il prend le contrôle complet de son propre nom et de son affichage de santé à travers ses valeurs et .En pratique, d'autres humanoïdes ne verront le nom/la santé du sujet que dans ces distances du sujet humanoïde.

Dans le scénario suivant, les deux gardiens et Octavia sont définis comme sujets et leurs portées 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 en dehors de la portée du Watchman humanoïde.

Aucun

Lorsque le DisplayDistanceType d'un humanoïde est réglé sur HumanoidDisplayDistanceType.None, sa barre de nom et de santé n'apparaît pas dans toutes les situations.Dans le scénario suivant, Watchman et Octavia sont réglés sur Aucun , donc l'autre personnage ne voit pas leur nom ou leur santé même à distance.

taperd'affichage de la santé

La propriété Humanoid.HealthDisplayType fournit une plus grande contrôle de la visibilité de la barre de santé du personnage.La barre reflète le facteur Health du humanoïde comme un facteur de sa santé MaxHealth et change de couleur du vert au jaune au rouge à mesure que la santé du humanoïde diminue.

Toujours activé

Lorsque la barre de santé d'un humanoïde est réglée sur , sa barre de santé apparaît toujours.

Afficher quand endommagé

Un humanoïde avec HealthDisplayType réglé sur HumanoidHealthDisplayType.DisplayWhenDamaged ne montre qu'une barre de santé lorsque son Health est inférieur à son MaxHealth.Dans le scénario suivant, Watchman a une santé complète et n'affiche pas de barre de santé, mais Octavia est endommagée de 50 % et affiche une barre de santé jaune.

Toujours désactivé

Lorsque la barre de santé d'un humanoïde est réglée sur , sa barre de santé n'apparaît jamais sous aucune condition.

Occlusion

L'occultation (masquage) des noms d'humanoïdes derrière des murs ou d'autres objets est contrôlée par la propriété Humanoid.NameOcclusion du personnage.

NoOcclusion

Lorsqu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est réglé sur NameOcclusion.NoOcclusion, son nom et sa santé ne sont jamais occultés de la vue des humanoïdes.

Dans le scénario suivant, Watchman et Octavia sont réglés sur NoOcclusion .Bien que les deux soient suffisamment cachés derrière des colonnes de pierre, le humanoïde de vision voit toujours leurs affichages de nom/santé.

OccludeTout

Lorsqu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est réglé 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 suffisamment cachés derrière des colonnes de pierre. Watchman est réglé sur OccludeAll , sa nom et sa santé sont donc cachés de l'humanoïde de vision. Octavia , cependant, est réglée sur Aucune occlusion et son nom/sa santé reste visible pour l'humanoïde de vision.

Occlusion ennemie

Lorsqu'un humanoïde est caché derrière un objet visible et que son NameOcclusion est réglé sur NameOcclusion.EnemyOcclusion, son nom et sa santé sont seulement occultés des humanoïdes ennemis (joueurs sur un autre Team ).

Dans le scénario suivant, les deux gardiens et Octavia sont suffisamment cachés derrière des colonnes de pierre, et les deux sont réglés sur EnemyOcclusion .L'humanoïde de vision et Watchman sont sur le même Team, donc l'occlusion de nom/santé ne survernirpas.Cependant, le nom et la santé de Octavia , sur l'équipe adverse, sont occultés.

Modifier l'affichage des caractères

Avatars d'utilisateur

Pour modifier le nom ou l'affichage de la santé pour chaque avatar entrant dans une expérience, connectez les événements Players.PlayerAdded et Player.CharacterAdded dans un Script et définissez les propriétés d'affichage sur le personnage de Humanoid.

Script - Personnalisation globale

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Donner à chaque humanoïde un contrôle complet sur sa distance de visualisation du nom/de la santé
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Définir la distance d'affichage du nom à 20 studs
humanoid.NameDisplayDistance = 20
-- Définir la distance d'affichage de la barre de santé à 15 studs
humanoid.HealthDisplayDistance = 15
-- Afficher la barre de santé uniquement 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 du nom d'un joueur Team, par exemple en définissant tous les joueurs "garde" à un nom générique et en masquant les noms de tous les joueurs "ninja".

Script - Personnalisation de l'équipe

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Définir le nom de tous les gardes à générique "Garde"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Masquer 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 NPC

Pour les personnages NPC 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'utilisateur Roblox de l'utilisateur Nom d'affichage qui est unique et séparé de son compte nom d'utilisateur .Pour afficher un nom entièrement personnalisé qui n'est pas lié au compte de l'utilisateur, vous pouvez annuler la propriété Humanoid.DisplayName.

Définir directement

Vous pouvez définir la propriété de n'importe quelle instance que vous obtenez par référence à travers un , tel que l'exemple de personnalisation d'équipe ou directement sur l'objet humanoid d'un personnage NPC.

Défini par l'entrée de l'utilisateur

Dans certains genres comme le jeu de rôle ou le combat, vous voudrez peut-être fournir une méthode pour que les utilisateurs saisissent leur propre nom de personnage, le nom du personnage de compagnie, etc.c'est spécifique à l'expérience et n'est pas lié au nom d'affichage de leur compte.Vous pouvez collecter cette entrée du côté du client via une entrée de nom TextBox .

Une fois l'entrée soumise, vous pouvez la transmettre au serveur via un événement distant et ensuite, du côté du serveur, écouter l'événement distant et attribuer le nom filtré au personnage utilisateur du serveur .

LocalScript - Événement de feu à distance

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
Script - Attribuer un nom filtré

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Créer un événement distant pour recevoir du texte du client pour 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)