Tên nhân vật/hiển thị sức khỏe

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Ví dụ Humanoid instance được sử dụng để tạo mô hình nhân vật, cả cho avatar người dùng và NPC.Khi một Humanoid có hiện diện bên trong một Model chứa một phần có tên là Đầu , Roblox hiển thị một tên và/hoặc thanh sức khỏe phía trên phần đó.

Character display information above an in-experience avatar

Thông qua các thuộc tính khác nhau Humanoid, bạn có thể chỉnh sửa những điều theo dõi:

  • Khoảng cách từ đó người dùng có thể nhìn thấy tên/sức khỏe của các humanoid khác so với humanoid của riêng họ.
  • Tên hiển thị mà hiển thị trên một humanoid mà hiển thị trên một humanoid.
  • Liệu thanh sức khỏe của một humanoid luôn xuất hiện, không bao giờ xuất hiện hoặc chỉ xuất hiện khi humanoid bị hư hại.
  • Liệu các thanh tên và sức khỏe có bị che khuất không (ẩn) khi dòng nhìn giữa máy ảnh và một con người khác bị chặn.

Hiển thị các thuộc tính

Loại khoảng cách hiển đánh máy

Các thuộc tính Humanoid.DisplayDistanceType đặt cách người dùng xem tên/sức khỏe của các nhân vật khác so với nhân vật của họ.

Xem trước

Khi một humanoid's DisplayDistanceType được đặt thành HumanoidDisplayDistanceType.Viewer , nó nhìn thấy tên/sức khỏe của các humanoid khác trong phạm vi của chính nó NameDisplayDistanceHealthDisplayDistance .Bạn có thể xem xét đây là ưu tiên thấp nhất vì nó không được xem xét cho các humanoid khác được cấu hình là chủ đề hoặc không .

Trong trường hợp sau, nhân vật của người dùng ( Viewer ) có kích thước lớn hơn NameDisplayDistance hơn HealthDisplayDistance , như được chỉ ra bởi các vòng tròn.Kết kết quảlà, người dùng thấy tên nhân vật cho cả WatchmanOctavia , nhưng chỉ thấy thanh sức khỏe cho Watchman .

Chủ đề

Khi một humanoid's DisplayDistanceType được đặt thành HumanoidDisplayDistanceType.Subject , nó sẽ mất kiểm soát hoàn toàn về tên và sức khỏe của mình thông qua các giá trị NameDisplayDistanceHealthDisplayDistance của nó.Hiệu quả, các humanoid khác chỉ sẽ nhìn thấy tên/sức khỏe của chủ đề trong khoảng cách đó từ chủ đề humanoid.

Trong trường hợp sau, cả WatchmanOctavia được đặt thành Chủ đề và phạm vi NameDisplayDistance của chúng được chỉ ra bởi các vòng tròn.Chỉ tên Octavia được nhìn thấy bởi người dùng có nhân vật đang ở trong phạm vi của cô nhưng ngoài phạm vi của Watchman humanoid.

Không có

Khi một humanoid's DisplayDistanceType được đặt thành HumanoidDisplayDistanceType.None , tên và thanh sức khỏe của nó không xuất hiện dưới bất kỳ hoàn cảnh nào.Trong trường hợp sau, cả WatchmanOctavia được đặt thành Không , vì vậy nhân vật còn lại không nhìn thấy tên hoặc sức khỏe của họ ngay cả khi ở trong phạm vi.

Loại hiển thị sức đánh máy

Thuộc tính Humanoid.HealthDisplayType cung cấp thêm kiểm soát về độ hiển thị của thanh sức khỏe của nhân vật.Thanh phản ánh Health của con người như một yếu tố của MaxHealth của nó và nó thay đổi màu từ xanh lá sang vàng đến đỏ khi sức khỏe của con người giảm.

Luôn bật

Khi thanh sức khỏe của một humanoid được đặt thành , thanh luôn xuất hiện.

Hiển thị khi bị hư hại

Một humanoid với HealthDisplayType được đặt thành HumanoidHealthDisplayType.DisplayWhenDamaged chỉ hiển thị thanh sức khỏe khi Health của nó nhỏ hơn thanh MaxHealth của nó.Trong trường hợp sau, Watchman có sức khỏe đầy đủ và không hiển thị thanh sức khỏe, nhưng Octavia bị hư hại 50% và hiển thị thanh sức khỏe màu vàng.

Luôn tắt

Khi thanh sức khỏe của một humanoid được đặt thành , nó sẽ không bao giờ xuất hiện dưới bất kỳ hoàn cảnh nào.

Sự che khuất

Sự che khuất (ẩn) các tên humanoid phía sau các bức tường hoặc các đối tượng khác được kiểm soát bởi tính chất Humanoid.NameOcclusion của nhân vật.

Không có sự che khuất

Khi một humanoid được giấu sau một vật thể có thể nhìn thấy và NameOcclusion của nó được đặt thành NameOcclusion.NoOcclusion, tên và sức khỏe của nó không bao giờ bị che khỏi việc xem humanoid.

Trong trường hợp sau, cả WatchmanOctavia được đặt thành NoOcclusion .Mặc dù cả hai đều được giấu đủ phía sau các cột đá, con người xem vẫn còn thấy tên/màn hình sức khỏe của họ.

Bỏ tất cả

Khi một humanoid được giấu sau một vật thể có thể nhìn thấy và NameOcclusion của nó được đặt thành NameOcclusion.OccludeAll, tên và sức khỏe của nó luôn bị che khỏi việc xem humanoids.

Trong trường hợp sau, cả WatchmanOctavia đều được giấu đủ phía sau các cột đá. Watchman được đặt thành OccludeAll , vì vậy tên và sức khỏe của nó được giấu khỏi con người xem.Tuy nhiên, Octavia được đặt thành NoOcclusion và tên/sức khỏe của cô vẫn hiển thị cho humanoid xem.

Khối chặn kẻ thù

Khi một hình người được giấu sau một vật thể có thể nhìn thấy và NameOcclusion của nó được đặt thành NameOcclusion.EnemyOcclusion , tên và sức khỏe của nó chỉ bị che khuất khỏi kẻ thù người (người chơi trên một đối tượng khác Team ).

Trong trường hợp sau, cả WatchmanOctavia đều được giấu đủ phía sau các cột đá, và cả hai đều được đặt thành EnemyOcclusion .Con người quan sát và Watchman ở trên cùng một Team , vì vậy sự che khuất tên/sức khỏe không xảy ra.Tuy nhiên, tên và sức khỏe của Octavia , trong đội đối thủ, bị che khuất.

Sửa hiển thị nhân vật

Hình đại diện người dùng

Để thay đổi tên hoặc hiển thị sức khỏe cho mỗi avatar nhận được trong một trải nghiệm, kết nối các sự kiện Players.PlayerAddedPlayer.CharacterAdded trong một Script và đặt tính năng hiển thị trên nhân vật của Humanoid .

Script - Tùy chỉnh toàn cầu

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Tặng mỗi humanoid đầy đủ quyền kiểm soát về tên/khoảng cách hiển thị sức khỏe của nó
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Subject
-- Đặt khoảng cách hiển thị tên lên 20 stud
humanoid.NameDisplayDistance = 20
-- Đặt khoảng cách hiển thị thanh sức khỏe lên 15 đinh tán
humanoid.HealthDisplayDistance = 15
-- Chỉ hiển thị thanh sức khỏe khi humanoid bị hư hại
humanoid.HealthDisplayType = Enum.HumanoidHealthDisplayType.DisplayWhenDamaged
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Bạn cũng có thể tùy chỉnh các thuộc tính dựa trên tên của người chơi Team, chẳng hạn như đặt tất cả các "bảo vệ" người chơi thành tên chung, và che giấu tên của tất cả các "ninja" người chơi.

Script - Tùy chỉnh đội

local Players = game:GetService("Players")
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Đặt tên của tất cả các bảo vệ thành chung "Bảo vệ"
if player.Team.Name == "Guards" then
humanoid.DisplayName = "Guard"
-- Ẩn tên cho tất cả các ninja
elseif player.Team.Name == "Ninjas" then
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
end
end
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Nhân vật NPC

Đối với các nhân vật NPC đã được đặt trong thế giới 3D, bạn có thể chỉnh sửa tên/sức khỏe trực tiếp trên đối tượng Humanoid trong cửa sổ Tính năng.

Thay thế tên hiển thị

Mặc định, tên hiển thị của một humanoid phù hợp với tài khoản Roblox của người dùng Tên hiển thị duy nhất và riêng biệt với tài khoản của họ Tên người dùng .Để hiển thị một tên hoàn toàn tùy chỉnh không liên quan đến tài khoản của người dùng, bạn có thể bỏ qua thuộc tính Humanoid.DisplayName.

Đặt trực tiếp

Bạn có thể đặt thuộc tính DisplayName của bất kỳ Humanoid instance nào mà bạn có tham chiếu thông qua một Script , chẳng hạn như ví dụ tùy chỉnh đội , hoặc trực tiếp trên đối tượng NPC của đối tượng Humanoid của con người.

Đặt thông qua nhập của người dùng

Trong một số thể loại như trò chơi nhập vai hoặc chiến đấu, bạn có thể muốn cung cấp một phương pháp cho người dùng nhập tên nhân vật của riêng họ, tên nhân vật thú cưng, v.v.đó là cụ thể cho trải nghiệm và không bị ràng buộc với tên hiển thị tài khoản của họ.Bạn có thể thu thập đầu vào này trên phía khách thông qua một đầu vào tên TextBox.

Khi nhập được gửi, bạn có thể chuyển nó cho máy chủ thông qua một sự kiện remote và sau đó, trên phía máy chủ, lắng nghe sự kiện remote và gán tên lọc cho nhân vật người dùng của Humanoid.

LocalScript - Sự kiện bắn từ xa

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local changeNameEvent = ReplicatedStorage:WaitForChild("ChangeNameEvent")
changeNameEvent:FireServer("Amory")
Tập lệnh - Gán tên bị lọc

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TextService = game:GetService("TextService")
-- Tạo sự kiện remote để nhận văn bản từ khách hàng để lọc
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)