รวบรวมไอเทม

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

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

ไอเท็ม

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

สำหรับรายการ โปรดกลับไปที่เอกสารออกแบบเกมของคุณ ซีรีส์นี้ใช้คริสตัลเป็นตัวอย่าง

  1. สร้างวัตถุโดยใช้ชิ้นส่วนหรือวัตถุที่พบโดยผู้ใช้ที่เชื่อถือได้ในตลาด

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

  2. หากใช้ส่วนของคุณเอง รวบรวมชิ้นส่วนทั้งหมดเป็น โมเดล วิธีหนึ่งในการทำเช่นนี้คือเลือกรายการทั้งหมด, คลิกขวาที่ส่วน, และเลือก กลุ่ม สิ่งนี้สร้างโมเดลที่จัดระเบียบชิ้นส่วนของคุณ

  3. ตรวจสอบให้แน่ใจว่าชิ้นส่วนทั้งหมด ถูกยึด

  4. ดังนั้นไอเทมจะไม่สามารถเก็บได้ในขณะที่พวกเขาหายไปโดยสร้าง BoolValue ชื่อว่า CanHarvest เพื่อติดตามสถานะของมัน

  5. ในคุณสมบัติสำหรับ CanHarvest ตรวจสอบกล่อง ค่า ไอเท็ม

สร้างเครื่องมือ

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

เพิ่มเครื่องมือ

สำหรับผู้เล่นที่จะใช้เครื่องมือเริ่มต้นดาวน์โหลดและวางไว้ใน StarterPack

  1. ดาวน์โหลดเครื่องมือเริ่มต้นด้านล่าง

  2. ใน Explorer ใต้ Workspace คลิกขวาที่ StarterPack จากนั้นเลือก ใส่จากไฟล์

  3. เลือกไฟล์ที่ดาวน์โหลดแล้ว starterTool.rbxm

  4. ทดสอบโครงการของคุณผู้เล่นควรได้รับอุปกรณ์ด้วยเครื่องมือทันทีที่พวกเขาเริ่มในเกม กด 1 เพื่อติดตั้งหรือเก็บเครื่องมือคลิกซ้ายเพื่อสวิงมัน

เขียนโค้ดเครื่องมือ

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

ตั้งค่าสคริปต์

ในจุดนี้ เพิ่มสคริปต์ให้กับเครื่องมือ สคริปต์นี้จะจัดการสิ่งที่เกิดขึ้นเมื่อเครื่องมือสัมผัสวัตถุที่เก็บเกี่ยวได้

  1. ใน StarterPack ภายใต้ StarterTool เพิ่มสคริปต์ใหม่ชื่อ ToolScript

  2. ในสคริปต์, เขียนความคิดเห็นที่อธิบายที่ด้านบน, จากนั้นสร้างตัวแปรเพื่อเก็บส่วนของเครื่องมือและเครื่องมือเอง


    -- ให้ไอเทมแก่ผู้เล่นเมื่อพวกเขาสัมผัสชิ้นส่วนที่เก็บเกี่ยวได้
    local tool = script.Parent
    local toolPart = tool.Handle

ตรวจสอบรายการ

เมื่อเครื่องมือสัมผัสวัตถุ มันจะตรวจสอบว่าวัตถุนั้นมี CanHarvest อยู่ภายในหรือไม่ และถ้าตัวเลขเป็นจริง

  1. สร้างฟังก์ชันใหม่ชื่อ onTouch() ด้วยพารามิเตอร์ชื่อ partTouched


    local tool = script.Parent
    local toolPart = tool.Handle
    local function onTouch(partTouched)
    end
  2. ในฟังก์ชันนั้น สร้างตัวแปรท้องถิ่นชื่อ canHarvestจากนั้นใช้ฟังก์ชัน FindFirstChild() เพื่อดูว่ามี CanHarvest boolean ในพ่อของส่วนนั้นหรือไม่


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. ตอนนี้สคริปต์จะต้องตรวจสอบว่ามีอะไรที่พบจริงๆ และหากมี รหัสสร้างข้อแม้ถ้าเงื่อนไขคือ canHarvestหากมีอะไรอยู่ใน canHarvest คำสั่งนี้จะประเมินเป็นจริง


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    end
    end
  4. ในข้อความ if เพิ่มคำสั่งพิมพ์เพื่อดูว่าสคริปต์ทำงานหรือไม่ คุณสามารถเขียนโลจิสติกสำหรับการเก็บรวบรวมรายการหลังจากที่คุณแน่ใจว่าทำงานได้


    if canHarvest then
    -- ใช้สำหรับการทดสอบว่าโค้ดทำงานได้
    print("Found an item")
    end
  5. ภายใต้ข้อความฟังก์ชัน end เพิ่ม toolPart.Touched:Connect(onTouch)สิ่งนี้ทำให้สคริปต์ตรวจสอบว่ามีอะไรสัมผัสเครื่องมือ (หรือในกรณีนี้คือจัดการของมัน) และหากมี ก็จะเรียก onTouch()


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    if canHarvest then
    print("Found an item")
    end
    end
    toolPart.Touched:Connect(onTouch)
  6. เล่นโครงการและใช้เครื่องมือบนรายการที่สามารถเก็บเกี่ยวได้ (คลิกซ้ายเพื่อสวิง) ตรวจสอบให้แน่ใจว่าคุณเห็นข้อความ "ไอเท็ม" ในหน้าต่างเอาต์พุต

เคล็ดลับการแก้ปัญหา

หากคุณไม่เห็นข้อความ ลองทิปต่อไปนี้

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

รับสถิติของผู้เล่น

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

  1. แรก, รับผู้เล่นโดยใช้เครื่องมือ ใน ToolScript, ภายใต้ local item = toolitem และเหนือฟังก์ชันที่กําหนดเอง, พิมพ์:


    local item = toolitem
    local backpack = tool.Parent
    local player = backpack.Parent
    local function onTouch(partTouched)
  2. ในบรรทัดต่อไปให้ค้นหาสถิติผู้เล่นโดยใช้ฟังก์ชัน FindFirstChild()


    local backpack = tool.Parent
    local player = backpack.Parent
    local playerStats = player:FindFirstChild("leaderstats")
    local function onTouch(partTouched)
  3. ภายใต้ local playerStats , สร้างตัวแปรเพื่อเก็บสถิติรายการและช่องว่าง


    local playerStats = player:FindFirstChild("leaderstats")
    local playerItems = playerStats:FindFirstChild("Items")
    local playerSpaces = playerStats:FindFirstChild("Spaces")

ตรวจสอบวัตถุที่เก็บเกี่ยวได้

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

  1. สคริปต์จะต้องใช้คำสั่ง if ที่มีสองเงื่อนไขที่ต้องปฏิบัติตามเริ่มต้นด้วยการสร้างคําสั่ง if จากนั้นเพิ่มเงื่อนไขต่อไปนี้โดยเชื่อมโยงกับคําสั่ง and คีย์เวิร์ด .

    • canHarvest.Value == true
    • playerItems.Value < playerSpaces.Value

    local function onTouch(partTouched)
    local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")
    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    end
    end
    end
  2. ในคําสั่ง if เอง เพิ่มไอเทมของผู้เล่นโดยการพิมพ์ playerItems.Value += 1


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    end
    end
  3. เล่นโครงการของคุณ; ใช้เครื่องมือของคุณเพื่อเก็บรวบรวมไอเทมและตรวจสอบว่าจํานวนไอเทมเพิ่มขึ้น

ไอเท็ม

เมื่อไอเทมถูกเก็บเกี่ยวแล้วจะรีเซ็ตในสองวิธี:

  • รายการจะหายไปและไม่สามารถโต้ตอบได้
  • สามารถตั้งค่า CanHarvest เป็น false

ไอเทมจะกลับสู่ปกติหลังจากเวลาสั้น ๆวิธีนี้ผู้เล่นจะได้รับไอเทมเพียงหนึ่งรายการสำหรับการเก็บเกี่ยวแต่ละครั้งและต้องมองหาอีกมากขึ้นในขณะที่รีเซ็ตเดิม

  1. ใต้ที่รายการถูกเพิ่มตั้ง canHarvest เป็น falseโดยการทำให้ค่าของ canHarvest ไอเท็มสคริปต์จะไม่ให้มากกว่าหนึ่งรายการต่อครั้งต่อเครื่องมือ


    if canHarvest then
    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    end
    end
  2. หลังจากตั้งค่ามูลค่าเป็น false ตั้งความโปร่งใสของชิ้นส่วนเป็น 1 (ไม่สามารถมองเห็นได้) และ CanCollide เป็น false ซึ่งหมายความว่าผู้เล่นไม่สามารถแตะต้องได้


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    end
  3. ประเภท task.wait(5) เพื่อให้เวลาสำหรับการรีเซ็ตไอเทม 5 เป็นตัวเลขที่แนะนำและอาจแตกต่างกันไปตามระยะเวลาที่คุณต้องการสำหรับประสบการณ์ของคุณ


    if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
    playerItems.Value += 1
    canHarvest.Value = false
    partTouched.Transparency = 1
    partTouched.CanCollide = false
    task.wait(5)
    end
  4. หลังจากรอ รหัสCanHarvest เป็นจริงและรีเซ็ตความโปร่งใสและ CanCollide เป็นค่าเดิม


    task.wait(5)
    canHarvest.Value = true
    partTouched.Transparency = 0
    partTouched.CanCollide = true
    end
  5. เล่นโครงการและตรวจสอบ:

    • ผู้เล่นจะได้รับไอเทมเพียง 1 รายการสําหรับการเก็บเกี่ยวไอเทม
    • รายการจะหายไปแล้วปรากฏขึ้นอีกครั้งหลังจากห้าวินาที

เคล็ดลับการแก้ปัญหา

ในจุดนี้หากหนึ่งในการตรวจสอบไม่ผ่านให้ลองหนึ่งในต่อไปนี้

  • ตรวจสอบว่าความโปร่งใสและ CanCollide สะกดและเขียนเป็นตัวหนาอย่างถูกต้อง
  • ตรวจสอบให้ใช้ canHarvest.Value และไม่ใช่ canHarvest = true

สคริปต์เครื่องมือสมบูรณ์

สามารถอ้างอิงเวอร์ชันสิ้นสุดของสคริปต์ได้ด้านล่าง


local toolPart = script.Parent
local tool = toolPart.Parent
local backpack = tool.Parent
local player = backpack.Parent
local playerStats = player:FindFirstChild("leaderstats")
local playerItems = playerStats:FindFirstChild("Items")
local playerSpaces = playerStats:FindFirstChild("Spaces")
local function onTouch(partTouched)
local canHarvest = partTouched:FindFirstChild("CanHarvest")
if canHarvest then
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value then
playerItems.Value += 1
canHarvest.Value = false
-- รีเซ็ตส่วนที่สัมผัสได้, ไอเท็ม
partTouched.Transparency = 1
partTouched.CanCollide = false
task.wait(5)
-- ทำให้รายการที่เก็บได้ปรากฏขึ้นอีกครั้งและใช้งานได้อีกครั้ง
canHarvest.Value = true
partTouched.Transparency = 0
partTouched.CanCollide = true
end
end
end
toolPart.Touched:Connect(onTouch)