สร้างอันตรายให้ผู้เล่น

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่


ตอนนี้ผู้เล่นสามารถตกลงไปยังแพลตฟอร์มใดก็ได้โดยไม่มีผลกระทบ องค์นี้จะพาคุณไปสร้างอันตรายที่มองไม่เห็นขนาดใหญ่ในระดับเดียวกับน้ำในเกมของคุณ เมื่อผู้เล่นตกลงไปในอันตราย จะทำให้สุขภาพของพวกเขาลดลงเป็นศูนย์และจะเกิดใหม่ที่จุดเริ่มต้นของเกม

สร้างอันตรายน้ำพื้นฐาน

สร้างอันตรายน้ำพื้นฐาน

ใน Workspace > World สร้างโฟลเดอร์ใหม่ชื่อ Hazards
ภายในโฟลเดอร์ Hazards สร้าง Part บล็อกใหม่ชื่อ Hazard โดยมี Size 825, 1, 576 และ CFrame.Position 174, -6.5, 38 เพื่อให้ส่วนดังกล่าวคลุมพื้นที่น้ำรอบเกาะและแพลตฟอร์ม
ตั้งค่า Transparency เป็น 1 เพื่อให้ส่วนนี้มองไม่เห็น และน้ำจริงๆ จะปรากฏขึ้นเป็นอันตราย ปิด CanCollide เพื่อให้ผู้เล่นตกผ่านไปยังน้ำ และเปิด Anchored เพื่อไม่ให้ฟิสิกส์เคลื่อนย้าย

ตรวจจับเมื่อผู้เล่นสัมผัสอันตราย

อันตรายไม่ทำอะไรจนกว่าคุณจะเขียนสคริปต์ที่ฟัง Touched และลดสุขภาพของผู้เล่นเป็นศูนย์

สร้าง HazardService

ใน ServerScriptService ให้สร้างสคริปต์ชื่อ HazardService ด้วยโค้ดดังต่อไปนี้:
```lua
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local hazardsFolder = Workspace.World.Hazards
local hazards = hazardsFolder:GetChildren()
local function onHazardTouched(otherPart)
local character = otherPart.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = 0
end
end
end
for _, hazard in hazards do
hazard.Touched:Connect(onHazardTouched)
end
```

HazardService มีความคล้ายคลึงกับ CoinService อย่างมาก อย่างไรก็ตาม แทนที่จะเก็บเหรียญ ผู้เล่นจะถูกตั้งค่าผลรวมสุขภาพเป็น 0 เมื่อตนสัมผัสกับอันตราย

สามารถปรับแต่ง เพิ่ม หรือลบวัตถุอันตรายในเกมได้ตามต้องการเพื่อสร้างอุปสรรคที่เป็นเอกลักษณ์ ขตราบใดที่วัตถุเหล่านั้นอยู่ในโฟลเดอร์ Hazards ลูปโค้ดจะเชื่อมโยงตัวจัดการเหตุการณ์ไปยังอันตรายทั้งหมดของคุณ

เชื่อมต่อกับวงจรชีวิตของผู้เล่น

วงจรชีวิตของผู้เล่นแสดงถึงเหตุการณ์ที่เกิดขึ้นเมื่อผู้เล่นมีปฏิสัมพันธ์ในเกมของคุณ เช่น การเข้าร่วม ออก หรือเกิดใหม่ คุณจำเป็นต้องเชื่อมโยงตัวจัดการกับเหตุการณ์เหล่านี้เพื่อดำเนินการลอจิกสำหรับแต่ละเหตุการณ์วงจรชีวิตหลัก

เพิ่มตัวจัดการวงจรชีวิตใน CoinService

ใน ServerScriptService ให้เพิ่มโค้ดดังต่อไปนี้ที่ส่วนท้ายของสคริปต์ CoinService ที่มีอยู่ (ไม่ต้องแทนที่โค้ดที่มีอยู่ — เพิ่มสิ่งนี้หลังจากมัน):
```lua
local function onPlayerAdded(player)
-- ตั้งค่าผลรวมเหรียญของผู้เล่นให้เป็น 0
updatePlayerCoins(player, function(_)
return 0
end)
player.CharacterAdded:Connect(function(character)
-- WaitForChild จะหยุดลูปผู้เล่น ดังนั้นด้านล่างควรทำในเธรดแยกต่างหาก
task.spawn(function()
-- เมื่อผู้เล่นตาย
character:WaitForChild("Humanoid").Died:Connect(function()
-- ตั้งค่าผลรวมเหรียญของผู้เล่นให้เป็น 0
updatePlayerCoins(player, function(_)
return 0
end)
end)
end)
end)
end
-- เริ่มต้นผู้เล่นใดๆ ที่ถูกเพิ่มเข้ามาก่อนจะเชื่อมต่อกับเหตุการณ์ PlayerAdded
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
local function onPlayerRemoved(player)
updatePlayerCoins(player, function(_)
return nil
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoved)
```

โค้ดนี้กำหนดฟังก์ชันเพื่อรีเซ็ตจำนวนเหรียญในช่วงเวลาวงจรชีวิตที่เหมาะสม:

  • Players.PlayerAdded จะถูกเรียกใช้งานเมื่อผู้เล่นเข้าร่วมเกม และตั้งค่าจำนวนเหรียญเป็น 0
  • Player.CharacterAdded จะถูกเรียกใช้งานเมื่อโมเดลตัวละครของผู้เล่นถูกเพิ่มเข้าไปในโลก มันเกิดขึ้นหลังจาก PlayerAdded และเมื่อใดก็ตามที่ผู้เล่นเกิดใหม่
  • Humanoid.Died จะถูกเรียกเมื่อผู้เล่นเสียชีวิต และตั้งค่าจำนวนเหรียญเป็น 0 โดย task.spawn() จะสร้างเธรดแยกสำหรับการจัดการเรื่องนี้ ดังนั้นด้านอื่น ๆ ของวงจรชีวิตผู้เล่นสามารถทำงานต่อไปได้
  • Player.PlayerRemoved จะถูกเรียกใช้เมื่อผู้เล่นออกจากเกมเพื่อทำความสะอาดสถานะของผู้เล่น
  • โค้ดนี้ประกอบไปด้วยปัญหาที่อาจเกิดขึ้นที่ผู้เล่นสามารถเก็บเหรียญก่อนที่เหตุการณ์ Players.PlayerAdded จะถูกดำเนินการ และจากนั้นจะทำให้ค่าของเหรียญจะถูกตั้งเป็นศูนย์ เพื่อลดปัญหานี้ สามารถพิจารณาใช้โซลูชันเช่นการจัดตารางโค้ดหรือการหยุดตัวละครของผู้เล่นจนกว่าการเริ่มต้นจะเสร็จสิ้น อย่างไรก็ตาม โซลูชันเหล่านี้เกี่ยวข้องกับแนวคิดการเขียนสคริปต์ที่ซับซ้อนมากขึ้นซึ่งอยู่นอกเหนือขอบเขตของบทแนะนำนี้

ทดสอบการเล่น

เลือก Test จากตัวเลือกแบบเลื่อนลงและคลิก Play เก็บเหรียญสักสองสามเหรียญ จากนั้นกระโดดลงไปในน้ำ ตัวละครของคุณควรตายและเกิดใหม่ที่จุดเริ่มต้น โดยมีจำนวนเหรียญถูกตั้งเป็น 0

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ