Humanoid インスタンスは、ユーザーアバターと NPC の両方のキャラクターモデルを作成するのに使用されます。When a Humanoid が、Model 内に存在し、 ヘッド という部分を含んでいる場合、Roblox は、その部分の上に名前と/または健康バーを表示します。

さまざまな Humanoid プロパティを通じて、フォロー中のものを変更できます:
- ユーザーが自分のキャラクターのヒューマノイドと関連して、他のヒューマノイドの名前/健康を見ることができる距離 [距離]。
- ヒューマノイドの上に表示される ディスプレイ名
- ヒューマノイドの ヘルスバー が常に表示されるか、表示されないか、またはヒューマノイドがダメージを受けたときにのみ表示されるかどうか
- 名前と健康バーが 隠されている (隠されている)かどうか、カメラと別のヒューマノイドの間の視線がブロックされたとき。
プロパティを表示
表示距入力タイプ
Humanoid.DisplayDistanceType プロパティは、ユーザーが自分のキャラクターと他のキャラクターの名前/健康をどのように見るかを設定します。
ビューア
ヒューマノイドの DisplayDistanceType が HumanoidDisplayDistanceType.Viewer に設定されると、自分の NameDisplayDistance と HealthDisplayDistance の範囲内の他のヒューマノイドの名前/健康が見えます。これは、他のヒューマノイドが 主題 または なし として構成されているため、最低優先度と考えることができます。
次のシナリオでは、ユーザーのキャラクター ( ビューア ) が、円で示されたように、NameDisplayDistance より大きい HealthDisplayDistance を持っています。結果として、ユーザーは ウォッチマン と オクタヴィア の両方のキャラクター名を見るが、 ウォッチマン のヘルスバーしか見ない。

件名
ヒューマノイドの DisplayDistanceType が HumanoidDisplayDistanceType.Subject に設定されると、自分の名前と健康状態の表示を 完全に制御 するために、NameDisplayDistance および HealthDisplayDistance の値を介して自分自身の名前と健康状態を取得します。効果的に、他のヒューマノイドは、 対象 ヒューマノイドからの距離内でのみ、対象の名前/健康を見ることができます。
次のシナリオでは、 ウォッチマン と オクタヴィア の両方が サブジェクト に設定され、円で彼らのNameDisplayDistanceが示されます。名前 オクタヴィア だけが、キャラクターが彼女の範囲内にいるが、 ウォッチマン ヒューマノイドの範囲外にいるユーザーによって見られます。

なし
ヒューマノイドの DisplayDistanceType が HumanoidDisplayDistanceType.None に設定されると、名前と健康バーはどの状況でも表示されません。次のシナリオでは、 ウォッチマン と オクタヴィア の両方が なし に設定されているため、他のキャラクターは、距離内にいても名前や体力を見ることができません。

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

破損時に表示する
人間のようなロボットで、HealthDisplayType を HumanoidHealthDisplayType.DisplayWhenDamaged に設定し、Health が MaxHealth より少ないときにのみヘルスバーを表示します。次のシナリオでは、 ウォッチマン はフルヘルスを持ち、ヘルスバーを表示しませんが、 オクタヴィア は 50% ダメージを受け、黄色いヘルスバーを表示します。

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

閉塞
壁や他のオブジェクトの後ろに人形の名前を隠す閉塞 (隠す) は、キャラクターの Humanoid.NameOcclusion プロパティで制御されます。
ノーオクロージョン
ヒューマノイドが可視オブジェクトの後ろに隠され、その NameOcclusion が NameOcclusion.NoOcclusion に設定されていると、その名前と健康は人形を見ることから決して隠されません。
次のシナリオでは、 ウォッチマン と オクタヴィア の両方が NoOcclusion に設定されています。両方とも十分に石の柱の後ろに隠されていますが、視覚ヒューマノイドは依然として名前/体力表示を見ます。

すべてを除外する
ヒューマノイドが可視オブジェクトの後ろに隠され、その NameOcclusion が NameOcclusion.OccludeAll に設定されていると、その名前と健康は常に人間oidの表示から排除されます。
次のシナリオでは、 ウォッチマン と オクタヴィア の両方が十分に石の柱の後ろに隠されています。 ウォッチマン は OccludeAll に設定されているので、名前と健康は視覚的なヒューマノイドから隠されています。 オクタヴィア は、しかし、NoOcclusion に設定され、名前/健康は視覚的なヒューマノイドに残されます。

敵オクルージョン
ヒューマノイドが可視オブジェクトの後ろに隠され、その NameOcclusion が NameOcclusion.EnemyOcclusion に設定されると、名前と健康は敵のヒューマノイド (異なる Team のプレイヤー) から隠されます。
次のシナリオでは、 ウォッチマン と オクタヴィア の両方が十分に石の柱の後ろに隠され、両方とも 敵オクロージョン に設定されています。視覚ヒューマノイドと ウォッチマン が同じ Team にあるので、名前/健康障害が発生しません。しかし、相手チームの オクタヴィア の名前と健康は隠されています。

キャラクターの表示を変更する
ユーザーアバター
エクスペリエンス内のすべての受信アバターの名前または健康状態の表示を変更するには、 および イベントを に接続し、キャラクターの 表示プロパティ を設定します。
スクリプト - グローバルカスタマイズ
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
-- すべてのガードの名前を一般的な「ガード」に設定
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 プロパティをオーバーライドできます。
直接設定
あなたは、DisplayName 参照する任意の Humanoid インスタンスの Script プロパティを設定できます、例えば、チームカスタマイズ の例、または直接、NPC キャラクターの ヒューマノイド オブジェクトに。
ユーザーの入力で設定
ロールプレイや戦格闘などの一部のジャンルでは、ユーザーが自分のキャラクター名、ペットキャラクター名などを入力できる方法を提供したい場合があります。それはエクスペリエンスに特有で、アカウントディスプレイ表示名に結び付いていません。クライアント側でこの入力を収集するには、TextBoxを通じてできます。

入力が送信されると、リモートイベントを通じてサーバーにパスし、サーバー側でリモートイベントを聞き、フィルターされた名前をユーザーキャラクターの に割り当てることができます。
ローカルスクリプト - リモートイベントを発火
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)