ตัวอย่าง Humanoid ใช้เพื่อสร้างโมเดลตัวละคร ทั้งสำหรับ avatar ของผู้ใช้และ NPCs เมื่อ Class.Humanoid ปรากฏใน Class.Model ที่มีชื่อว่า Head ร
ผ่านคุณสมบัติต่างๆ Humanoid กำลังติดตาม:
- ระยะ จาก ที่ผู้ใช้สามารถดูชื่อ/สุขภาพของมนุษย์อื่น ๆ ในความสัมพันธ์กับมนุษย์ของตัวละครของตัวเอง
- ชื่อ แสดงผล ซึ่งแสดงผลเหนือ humanoid
- ว่าบาร์สุขภาพของมนุษย์ จะปรากฏ เสมอ ไม่เคยปรากฏ หรือปรากฏเฉพาะเมื่อมนุษย์ได้รับความเสียหาย
- ว่าชื่อและบาร์สุขภาพจะปิดอยู่เมื่อเส้นสายตาระหว่างกล้องและอีกมนุษย์โอคลูดอยู่หรือไม่
แสดงคุณสมบัติ
แสดงระยะทางประเภท
คุณสมบัติ Humanoid.DisplayDistanceType ตั้งค่าวิธีที่ผู้ใช้เห็นชื่อ/สุขภาพของตัวละครอื่นในความสัมพันธ์กับตัวละครของตัวเอง
ผู้ดู
เมื่อ DisplayDistanceType ของมนุษย์ถูกตั้งเป็น Class.Humanoid.NameDisplayDistance|Name
ในสถานการณ์ต่อไปนี้ ตัวละครของผู้ใช้ ( ผู้ดูเหมือน ) มี NameDisplayDistance ใหญ่กว่า Class.Humanoid.
เรื่อง
เมื่อ DisplayDistanceType ของมนุษย์กำหนดเป็น Enum.HumanoidDisplayDistanceType|HumanoidDisplay
ในสถานการณ์ต่อไปนี้ Watchman และ Octavia ตั้งไว้ที่ เป้าหมาย และระยะ 1> Class.Humanoid.NameDisplayDistance|NameDisplayDistance1> ของพวกเขาถูกแ
ไม่มี
เมื่อ DisplayDistanceType ของมนุษย์ตั้งไว้ที่ HumanoidDisplayDistanceType.None จะไม่ปรากฏใต้สถานการณ์ใด ๆ
ประเภทของการแสดงสุขภาพ
สมบัติ Humanoid.HealthDisplayType ให้การควบคุมเพิ่มเติมเกี่ยวกับความโปร่งใสของบาร์สุขภาพของตัวละคร บาร์สะท้อนสีของ humanoid เป็น Class.Humanoid.Health|
เสมอ
เมื่อ HealthDisplayType ของมนุษย์กำหนดไว้เป็น HumanoidHealthDisplayType.AlwaysOn สุขภาพบาร์ของมันจะปรากฏขึ้นเสมอ
แสดงเมื่อคุณได้รับความเสียหาย
มนุษย์ที่มี HealthDisplayType ตั้งค่าให้เป็น Enum.HumanoidHealthDisplayType|HumanoidHealth
เครื่องปิดเสมอ
เมื่อ HealthDisplayType ของมนุษย์กำหนดไว้เป็น HumanoidHealthDisplayType.AlwaysOff ไม่เคยปรากฏใต้สถานการณ์ใด ๆ ก็ตาม
การปิด
การซ่อนชื่อของมนุษย์หลังผนังหรือวัตถุอื่น ๆ จะได้รับการควบคุมโดยโปรไฟล์ Humanoid.NameOcclusion ของตัวละคร
NoOcclusion ไม่
เมื่อมนุษย์ถูกซ่อนอยู่เบื้องหลังวัตถุที่มองเห็นได้และ NameOcclusion ตั้งค่าไว้ที่ NameOcclusion.NoOcclusion จะไม่มีชื่อและสุขภาพของมนุษย์ถูกปิดกั
ในสถานการณ์ต่อไปนี้ Watchman และ Octavia ตั้งไว้ที่ NoOcclusion แม้ว่าทั้งสองจะซ่อนอยู่หลังหินคอลัมน์ก็ตาม แต่ผู้ชมยังคงเห็นชื่อ/สุขภาพของพวกเขา นอกจากนี้มนุษย์จะยังคงเห็น
ปิดการใช้งานทั้งหมด
เมื่อมนุษย์ถูกซ่อนอยู่เบื้องหลังวัตถุที่มองเห็นได้และ NameOcclusion ตั้งค่าไว้ที่ NameOcclusion.OccludeAll นั้นชื่อและสุขภาพของมนุษย์จะถูกปิดกั้
ในสถานการณ์ต่อไปนี้ Watchman และ Octavia ถูกซ่อนอยู่เบื้องหลังของโคลัมน์หิน Watchman ตั้งค่าเป็น 1> ปิดการโอเคล็อ
EnemyOcclusion
เมื่อเซ็นเซอร์มนุษย์ถูกซ่อนอยู่หลังวัตถุที่มองเห็นได้และเป้าหมาย NameOcclusion ตั้งค่าไว้ที่ NameOcclusion.EnemyOcclusion ชื่อแล
ในสถานการณ์ต่อไปนี้ Watchman และ Octavia ถูกซ่อนอยู่เบื้องหลังของโคลัมน์หินทั้งสองและทั้งสองถูกตั้งไว้เป
การเปลี่ยนแปลงการแสดงผลตัวละคร
Avatar ผู้ใช้
เพื่อปรับแต่งการแสดงชื่อหรือสถานะสุขภาพสำหรับแต่ละอวตารในประสบการณ์, เชื่อมต่อเหตุการณ์ Players.PlayerAdded และ Player.CharacterAdded ใน Script
สคริปต์ - การปรับแต่งระดับโลก
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
สำหรับตัวละคร NPC ที่อยู่ในโลก 3D แล้ว คุณสามารถแก้ไขชื่อ/สุขภาพได้โดยตรงบนวัตถุ Humanoid ในหน้าต่าง โปรพีเพอร์ตี้
การเปลี่ยนชื่อ Display ทั่วไป
ตามปกติ, ชื่อจอของมนุษย์จะตรงกับบัญชี Roblox ของผู้ใช้ ชื่อจอ ซึ่งเป็นเอกลักษณ์และแยกออกจากบัญชีของผู้ใช้ ชื่อผู้ใช้ เพื่อแสดงชื่อที่
การตั้งค่าโดยตรง
คุณสามารถตั้งค่าสมบัติของ DisplayName ของคลาสใด ๆ ที่คุณได้รับผ่าน 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)