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

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


วัตถุอันตรายลดสุขภาพของผู้เล่นเมื่อพวกเขาแตะพวกเขา ในฐานะจุดเริ่มต้นที่ง่าย ส่วนนี้ของการกวดวิชาสอนคุณวิธีการสร้างส่วนใหญ่ที่มองไม่เห็นในระดับเดียวกับน้ําใน

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

เพื่อสร้างความเสี่ยงทางน้ำพื้นฐาน:

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

  2. ใน อันตราย โฟลเดอร์ใส่ส่วน บล็อก และเปลี่ยนชื่อมันเป็น อันตราย

    Studio's Explorer window with the Hazard block Part highlighted under the Hazards folder.
  3. ย้ายและปรับขนาดชิ้นส่วนเพื่อครอบคลุมเส้นสายน้ำรอบเกาะและแพลตฟอร์ม ตัวอย่าง การกระโดดเกาะ - สคริปต์ ช่วยให้ ขนาด เป

    A far out view of all of the cylinder sea stacks and the island. A large block part covers the water where a player could land if they fell from a sea stack.
  4. เลือกส่วน แล้วใน หน้าต่าง Proprieties กำหนดค่าต่อไปนี้เพื่อให้ความเสี่ยงให้มองไม่เห็นและผู้เล่นสามารถผ่านได้โดยตรงผ่านมัน:

    • ตั้ง ความโปร่งใส เป็น 1 หนึ่งนี้ทำให้อันตรายมองไม่เห็นดังนั้นจึงทำให้น้ำจริงดูเหมือนอันตราย
    • ปิดการใช้งาน CanCollide นี้จะบอกให้เครื่องยนต์ว่าชิ้นส่วนอื่นสามารถผ่านอันตรายได้โดยไม่มีอุปสรรค ซึ่งหมายความว่าผู้เล่นสามารถตกผ่านอันตรายได้
    • เปิดใช้งาน ติดขัด นี้จะบอกให้เครื่องยนต์ไม่เคยเปลี่ยนตำแหน่งของอันตรายเนื่องจากการจำลองทางกายภาพใด ๆ ซึ่งหมายความว่าผู้เล่นสามารถสัมผัสอันตรายโดยไม่ส่งผลกระทบตำแหน่งของมัน
  5. สร้าง สคริปต์ ใน ServerScriptService แล้วเปลี่ยนชื่อมันเป็น HazardService

  6. แทนที่รหัสเริ่มต้นด้วยรหัสต่อไปนี้:


    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 เมื่อสัมผัสกับอันตราย

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

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

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


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)

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

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

ทดสอบ

ได้เวลาดูว่าผู้เล่นจะทำงานตามที่คาดหวังไว้หรือไม่ เมื่อคุณแตะน้ำจะตายและสูญเสียเหรียญของพวกเขา เพื่อทดสอบเกมของคุณ:

  1. ในแถบเมนู คลิกปุ่ม เล่น ปุ่ม Studio จะเข้าสู่โหมดทดสอบการเล่น

    Studio's Home tab with the Play button highlighted in the menu bar.
  2. ย้ายตัวละครของคุณเพื่อเก็บเหรียญบาง枚แล้วกระโดดลงในน้ำ หากสคริปของคุณทำงานอย่างถูกต้องแล้วตัวละครของคุณจะตาย และจำนวนเหรียญในกระดานผู้นําจะรีเซ็ตเป็น 0