การเก็บรวบรวมไอเทม

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

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

สร้างไอเท็ม

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

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

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

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

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

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

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

  5. ใน รายละเอียดสำหรับ CanHarvest ตรวจสอบกล่อง มูลค่า ตรวจสอบกล่องมูลค่าทำให้ตรวจสอบสถานะ true ซึ่งหมายความว่าผู้เล่นสามารถเก็บเกี่ยวไอเท็มได้

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

ผู้เล่นต้องการสิ่งที่เหมือนขวานหรือเกล็ดหิมะเพื่อรวบรวมไอเทมด้วย ใน 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 บูลูนในพ่อของส่วนนั้นหรือไม่


    local function onTouch(partTouched)
    local canHarvest = partTouched:FindFirstChild("CanHarvest")
    end
  3. ตอนนี้สคริปต์ต้องตรวจสอบว่ามีอะไรพบจริงหรือไม่และหากมีให้ดำเนินการตามคำสั่งหรือไม่ เพื่อทำเช่นนี้ให้สร้างข้อ if ที่มีความเป็น 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) ให้สคริปต์ตรวจสอบว่ามีอะไรสัมผัสเครื่องมือ (หรือในกรณีนี้คือจุดมือของมัน) และหากเป็นเช่นนั้นก็จะโทร <


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

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

หากคุณไม่เห็นข้อความนั้น ลองใช้เคล็ดลับต่อไปนี้

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

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

ก่อนที่จะเพิ่มรายการของผู้เล่น ตารางอันดับตารางอันดับมันสามารถเปลี่ยนจำนวนรายการของผู้เล่น

  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")

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

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

  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 เป็นปลอม โดยทำให้ค่าของ 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 เป็น true และรีเซ็ต Transparency และ CanCollide เป็นค่าเริ่มต้นของพวกเขา


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

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

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

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

  • ตรวจสอบว่า Transparency และ CanCollide เขียนอย่างถูกต้องและมีตัวอักษรที่ใหญ่เท่ากัน
  • ให้แน่ใจว่าใช้ canHarvest.Value และไม่ใช่ canHarvest = จริง

สำเร็จ Script

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


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, ไอเท็ม
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)