Humanoidインスタンスは、ユーザーのアバターとNPCの両方のキャラクターモデルを作成するために使用されます。 HumanoidがHeadという名前のパーツを含むModel内に存在する場合、Robloxはそのパーツの上に名前や健康バーを表示します。

さまざまなHumanoidプロパティを使用して、次のことを変更できます。
- ユーザーが他のヒューマノイドの名前/健康を自分のキャラクターのヒューマノイドに対して見ることができる距離。
- ヒューマノイドの上に表示される表示名。
- ヒューマノイドの健康バーが常に表示されるか、決して表示されないか、またはヒューマノイドがダメージを受けたときのみ表示されるかどうか。
- カメラと別のヒューマノイドの間の視線が遮られているときに、名前や健康バーが隠されるかどうか。
表示プロパティ
表示距離タイプ
Humanoid.DisplayDistanceTypeプロパティは、ユーザーが他のキャラクターの名前/健康をどのように見るかを設定します。
ビューアー
ヒューマノイドのDisplayDistanceTypeがHumanoidDisplayDistanceType.Viewerに設定されていると、そのヒューマノイドは自分のNameDisplayDistanceおよびHealthDisplayDistanceの範囲内にある他のヒューマノイドの名前/健康を確認します。これは、subjectやnoneとして構成されている他のヒューマノイドには考慮されないため、優先順位が最も低いと見なすことができます。
次のシナリオでは、ユーザーのキャラクター(Viewer)は、NameDisplayDistanceがHealthDisplayDistanceよりも大きいことが示されています。そのため、ユーザーはWatchmanとOctaviaの両方のキャラクター名を見ることができますが、Watchmanの健康バーのみが表示されます。

サブジェクト
ヒューマノイドのDisplayDistanceTypeがHumanoidDisplayDistanceType.Subjectに設定されると、そのヒューマノイドは自分の名前と健康表示を完全に制御し、自分のNameDisplayDistanceおよびHealthDisplayDistanceの値を使用します。効果的に、他のヒューマノイドは、そのサブジェクトヒューマノイドからの距離内でのみ、サブジェクトの名前/健康を見ることができます。
次のシナリオでは、WatchmanとOctaviaの両方がSubjectに設定されており、そのNameDisplayDistanceの範囲が円で示されています。ユーザーのキャラクターが彼女の範囲内にいるがWatchmanヒューマノイドの範囲外にいるため、名前Octaviaのみが表示されます。

なし
ヒューマノイドのDisplayDistanceTypeがHumanoidDisplayDistanceType.Noneに設定されると、その名前と健康バーはどのような状況でも表示されません。次のシナリオでは、WatchmanとOctaviaの両方がNoneに設定されているため、他のキャラクターは範囲内にいても名前または健康が表示されません。

健康表示タイプ
Humanoid.HealthDisplayTypeプロパティは、キャラクターの健康バーの可視性をさらに制御します。このバーは、ヒューマノイドのHealthをそのMaxHealthの要因として反映し、ヒューマノイドの健康が減少するにつれて色が緑から黄、赤に変わります。
常にオン
ヒューマノイドのHealthDisplayTypeがHumanoidHealthDisplayType.AlwaysOnに設定されると、その健康バーは常に表示されます。

ダメージ時に表示
HealthDisplayTypeがHumanoidHealthDisplayType.DisplayWhenDamagedに設定されたヒューマノイドは、自分のHealthがそのMaxHealthよりも少ない場合にのみ健康バーを表示します。次のシナリオでは、Watchmanは完全な健康を持ち、健康バーを表示しませんが、Octaviaは50%のダメージを受け、黄色の健康バーを表示します。

常にオフ
ヒューマノイドのHealthDisplayTypeがHumanoidHealthDisplayType.AlwaysOffに設定されると、その健康バーはどのような状況でも表示されません。

障害
ヒューマノイドの名前が壁や他のオブジェクトの後ろに隠れていることを制御するのは、キャラクターのHumanoid.NameOcclusionプロパティです。
障害なし
ヒューマノイドが目に見えるオブジェクトの後ろに隠れており、NameOcclusionがNameOcclusion.NoOcclusionに設定されていると、その名前と健康は他のヒューマノイドから常に見える状態に保たれます。
次のシナリオでは、WatchmanとOctaviaの両方がNoOcclusionに設定されています。両者が石の柱の後ろに十分に隠れているにもかかわらず、見るヒューマノイドは彼らの名前/健康表示をまだ見ることができます。

すべて遮蔽
ヒューマノイドが可視オブジェクトの後ろに隠れており、そのNameOcclusionがNameOcclusion.OccludeAllに設定されていると、その名前と健康は他のヒューマノイドから常に隠されます。
次のシナリオでは、WatchmanとOctaviaの両方が石の柱の後ろに十分に隠されています。WatchmanはOccludeAllに設定されているため、その名前と健康は見るヒューマノイドから隠されています。しかし、OctaviaはNoOcclusionに設定されているため、彼女の名前/健康は見るヒューマノイドに対して表示されます。

敵の遮蔽
ヒューマノイドが可視オブジェクトの後ろに隠れており、そのNameOcclusionがNameOcclusion.EnemyOcclusionに設定されていると、その名前と健康は敵のヒューマノイド(別のTeamにいるプレイヤー)からのみ隠されます。
次のシナリオでは、WatchmanとOctaviaの両方が石の柱の後ろに十分に隠されており、両者がEnemyOcclusionに設定されています。見るヒューマノイドとWatchmanは同じTeamにいるため、名前/健康の遮蔽は発生しません。しかし、対向チームのOctaviaの名前と健康は隠されます。

キャラクター表示の変更
ユーザーアバター
ゲーム内のすべての到着するアバターの名前や健康表示を変更するには、Players.PlayerAddedとPlayer.CharacterAddedイベントに接続して、キャラクターのHumanoidに表示プロパティを設定します。
スクリプト - グローバルカスタマイズ
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- 各ヒューマノイドに自分の名前/健康表示距離を完全に制御させる
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- 名前表示距離を20スタッドに設定する
humanoid.NameDisplayDistance = 20
-- 健康バー表示距離を15スタッドに設定する
humanoid.HealthDisplayDistance = 15
-- ヒューマノイドがダメージを受けた時のみ健康バーを表示する
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
プレイヤーのTeamに基づいてプロパティをカスタマイズすることもできます。たとえば、すべての「ガード」プレイヤーに一般的な名前を設定し、すべての「忍者」プレイヤーの名前を隠すことができます。
スクリプト - チームカスタマイズ
local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- すべてのガードの名前を一般的な「Guard」に設定する
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- すべての忍者の名前を隠す
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
NPCキャラクター
3Dワールドにすでに配置されているNPCキャラクターについては、プロパティウィンドウでHumanoidオブジェクトの名前/健康を直接編集できます。


表示名のオーバーライド
デフォルトでは、ヒューマノイドの表示名はユーザーのRobloxアカウントの表示名に一致し、これはユニークでアカウントのユーザー名とは別です。ユーザーのアカウントに関連付けられない完全カスタム名を表示するには、Humanoid.DisplayNameプロパティをオーバーライドすることができます。
直接設定
HumanoidインスタンスのDisplayNameプロパティを、チーム カスタマイズの例として参照を取得したScriptを通じて、またはNPCキャラクターのHumanoidオブジェクト上で直接設定できます。
ユーザー入力を通じて設定
ロールプレイングや戦闘などのいくつかのジャンルでは、ユーザーが自分のキャラクター名、ペットキャラクター名など、体験に特有でアカウントの表示名に関連付けられない方法を提供したい場合があります。この入力をTextBox名前エントリーを通じてクライアント側で収集できます。

入力が送信されると、リモートイベントを介してサーバーに渡し、サーバー側でリモートイベントを待機し、ユーザーのキャラクターのHumanoidにフィルタリングされた名前を割り当てることができます。
LocalScript - リモートイベントの発火local ReplicatedStorage = game:GetService("ReplicatedStorage")local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")changeNameEvent:FireServer("Amory")
スクリプト - フィルタリングされた名前の割り当て
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- クライアントからテキストをフィルタリングするためのリモートイベントを作成
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)