ด้วยกระดานผู้นําที่สร้างขึ้นแล้วผู้เล่นต้องการบางสิ่งบางอย่างเพื่อรวบรวม สําหรับเรื่องนี้คุณจําเป็นต้องสร้างไอเท็ม 3D สําหรับผู้เล่นที่จะพบในโลก
สร้างไอเท็ม
ไอเทมในประสบการณ์เป็นรุป 3D ไอเท็มแต่ละไอเทม, หลังจากเก็บเกี่ยวแล้ว, จะหายไปแล้วเรียกใหม่หลังจากระยะเวลาที่จำกัด
ไอเท็มโปรดดูกลับไปที่เอกสารการออกแบบเกมของคุณ ซีรีส์นี้ใช้คริสตัลเป็นตัวอย่าง
สร้างวัตถุโดยใช้ชิ้นส่วนหรือวัตถุที่พบโดยผู้ใช้ที่ไว้ใจได้ในตลาด
หากต้องการ ดาวน์โหลดส่วนคริสตัลด้วยลิงค์นี้ link เพื่อเพิ่มมัน ให้คลิกที่ Workspace และเลือก ใส่จากไฟล์
หากใช้ชิ้นส่วนของคุณเองให้ทุกชิ้นอยู่ใน รุ่น วิธีหนึ่งในการทำเช่นนี้คือการเลือกรายการทั้งหมด คลิกซ้ายบนชิ้นส่วนและเลือก กลุ่ม นี่สร้างรุ่นที่จัดระเบียบเรียงชิ้
ตรวจสอบให้แน่ใจว่าชิ้นส่วนทั้งหมด ติดอยู่
ดังนั้นไอเท็มจึงไม่สามารถเก็บเกี่ยวได้ในขณะที่พวกเขาหายไป, สร้าง มูลค่าตัว BoolValue ที่มีชื่อว่า CanHarvest เพื่อติดตามสถานะของมัน
ใน รายละเอียดสำหรับ CanHarvest ตรวจสอบกล่อง มูลค่า ตรวจสอบกล่องมูลค่าทำให้ตรวจสอบสถานะ true ซึ่งหมายความว่าผู้เล่นสามารถเก็บเกี่ยวไอเท็มได้
การสร้างเครื่องมือ
ผู้เล่นต้องการสิ่งที่เหมือนขวานหรือเกล็ดหิมะเพื่อรวบรวมไอเทมด้วย ใน Roblox ไอเทมที่ผู้เล่นสามารถใช้และใช้ได้มีชื่อว่า เครื่องมือ นั่นคือเครื่องมือที่คุณสามารถใช้และปรับ
เพิ่มเครื่องมือ
สำหรับผู้เล่นที่จะใช้เครื่องมือเริ่มต้นดาวน์โหลดและวางใน StarterPack
ใน Explorer ใต้ Workspace คลิกขวาที่ StarterPack แล้วเลือก ใส่จากไฟล์
เลือกไฟล์ที่ดาวน์โหลด, starterTool.rbxm
ทดสอบโครงการของคุณ ผู้เล่นควรได้รับเครื่องมือนี้เมื่อพวกเขาเริ่ม ในเกม, กด 1 เพื่อให้อุปกรณ์หรือถอนอุปกรณ์ คลิกซ้ายเพื่อแกว่งมัน
การเขียนโค้ดของเครื่องมือ
ตารางอันดับไอเท็ม1 ในกระดานผู้นํา หากการเก็บเก
การติดตั้งสคริปต์
ในขั้นตอนนี้ เพิ่มสคริปต์ให้กับเครื่องมือ สคริปต์นี้จัดการกับสิ่งที่เกิดขึ้นเมื่อเครื่องมือสัมผัสวัตถุที่เก็บเกี่ยวได้
ใน StarterPack ใต้ StarterTool เพิ่มสคริปต์ใหม่ที่มีชื่อว่า ToolScript
ในสคริปต์, เขียนความคิดเห็นที่อธิบายอยู่ด้านบน, แล้วสร้างตัวแปรเพื่อเก็บส่วนของเครื่องมือและเครื่องมือเอง
-- ให้รายการผู้เล่นเมื่อพวกเขาแตะที่ส่วนผลิตผลlocal tool = script.Parentlocal toolPart = tool.Handle
ตรวจสอบรายการ
เมื่อเครื่องมือสัมผัสวัตถุ มันจะตรวจสอบว่าวัตถุนั้นมี CanHarvest ภายในและตั้งค่าตัวแปรนี้เป็น "จริง"
สร้างฟังก์ชันใหม่ที่มีชื่อว่า onTouch() ด้วยตัวแปรที่มีชื่อว่า partTouched
local tool = script.Parentlocal toolPart = tool.Handlelocal function onTouch(partTouched)endในคุณสมบัตินั้น สร้างแปรต้องใช้ท้องถิ่นที่มีชื่อว่า canHarvest แล้วใช้คุณสมบัติ FindFirstChild() เพื่อดูว่ามี CanHarvest บูลูนในพ่อของส่วนนั้นหรือไม่
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")endตอนนี้สคริปต์ต้องตรวจสอบว่ามีอะไรพบจริงหรือไม่และหากมีให้ดำเนินการตามคำสั่งหรือไม่ เพื่อทำเช่นนี้ให้สร้างข้อ if ที่มีความเป็น canHarvest หากมีอะไรใน canHarvest ใ
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenendendใน if สถานที่, เพิ่มประกาศพิมพ์เพื่อดูว่าสคริปต์ทำงานหรือไม่ คุณสามารถเขียนโลจิกสำหรับการเก็บเกี่ยวไอเทมหลังจากที่คุณแน่ใจว่ามันทำงานได้
if canHarvest then-- ใช้สำหรับการทดสอบว่าโค้ดทำงานได้หรือไม่print("Found an item")endใต้ประโยค end ของฟังก์ชัน เพิ่ม toolPart.Touched:Connect(onTouch) ให้สคริปต์ตรวจสอบว่ามีอะไรสัมผัสเครื่องมือ (หรือในกรณีนี้คือจุดมือของมัน) และหากเป็นเช่นนั้นก็จะโทร <
local function onTouch(partTouched)local canHarvest = partTouched:FindFirstChild("CanHarvest")if canHarvest thenprint("Found an item")endendtoolPart.Touched:Connect(onTouch)เล่นโครงการและใช้เครื่องมือบนไอเท็มที่เก็บเกี่ยวได้ (คลิกซ้ายเพื่อแกว่ง) ให้แน่ใจว่าคุณเห็นข้อความ "พบไอเท็ม" ในหน้าต่างการสรุป
เคล็ดลับการแก้ปัญหา
หากคุณไม่เห็นข้อความนั้น ลองใช้เคล็ดลับต่อไปนี้
- หากคุณกำลังใช้ชิ้นส่วนและเมชที่กําหนดเองคุณอาจได้รับข้อผิดพลาด สคริปต์จะทํางานเฉพาะถ้าเครื่องมือนี้สัมผัสกับชิ้นส่วนที่เป็นลูกของชิ้นส่วน
- ให้แน่ใจว่าเครื่องมืออยู่ใน StarterPack ไม่ใช่ใน Workspace
- ตรวจสอบว่าชิ้นส่วนนั้นติดอยู่หรือไม่
รับสถิติผู้เล่น
ก่อนที่จะเพิ่มรายการของผู้เล่น ตารางอันดับตารางอันดับมันสามารถเปลี่ยนจำนวนรายการของผู้เล่น
ตัวแรกให้ผู้เล่นโดยใช้เครื่องมือ ใน ToolScript ภายใต้ local item = toolitem และเหนือการเรียกใช้ฟังก์ชันกําหนดเอง, ใส่:
local item = toolitemlocal backpack = tool.Parentlocal player = backpack.Parentlocal function onTouch(partTouched)ในตัวอักษรต่อไป, ค้นหาผู้นำของผู้เล่นโดยใช้คุณสมบัติ FindFirstChild() ตัว
local backpack = tool.Parentlocal player = backpack.Parentlocal playerStats = player:FindFirstChild("leaderstats")local function onTouch(partTouched)ภายใต้ local playerStats รวมกับค่าตัวแปรเพื่อเก็บสถิติไอเทมและพื้นที่
local playerStats = player:FindFirstChild("leaderstats")local playerItems = playerStats:FindFirstChild("Items")local playerSpaces = playerStats:FindFirstChild("Spaces")
ตรวจสอบวัตถุที่เก็บเกี่ยวได้
ตอนนี้สคริปต์เครื่องมือมีแปรผู้เล่นและพื้นที่ผู้เล่นสร้างขึ้นแล้ว คุณสามารถเริ่มให้ผู้เล่นได้รับไอเท็มได้ ใช้ฟังก์ชั่นที่สร้างขึ้นเพื่อตรวจสอบว่าวัตถุที่สัมผัสเครื่องมื
สคริปต์จะต้องมี if สองค่าที่ต้องตรงตาม เริ่มต้นโดยการสร้าง if สองค่า แล้วเพิ่มในเงื่อนไขต่อไปนี้ เชื่อมโยงกับคำว่า and คำสั่ง.
- canHarvest.Value == true
- playerItems.Value < playerSpaces.Value
local function onTouch(partTouched)local canHarvest = partTouched.Parent:FindFirstChild("CanHarvest")if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenendendendใน if สถานะเอง, เพิ่มไอเท็มของผู้เล่นโดยการพิมพ์ playerItems.Value += 1 .
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1endendเล่นโครงการของคุณ ใช้เครื่องมือของคุณเพื่อเก็บเกี่ยวไอเท็มและตรวจสอบว่าจำนวนไอเท็มเพิ่มขึ้น
รีเซ็ตไอเท็ม
เมื่อรายการถูกเก็บเกี่ยวมันจะรีเซ็ตในสองวิธี:
- รายการจะหายไปและไม่สามารถใช้งานได้
- สามารถตั้งค่า CanHarvest เป็น false
ไอเท็มจะถูกส่งกลับไปยังปกติหลังจากเวลาสั้น ๆ นี้ ด้วยวิธีนี้ผู้เล่นจะได้รับไอเท็มเพียงรายการเดียวสำหรับแต่ละฤดูกาล และต้องมองหามากขึ้นในขณะที่รีเซ็ตด้านนอก
ใต้ที่รายการถูกเพิ่ม, ตั้งค่า canHarvest เป็นปลอม โดยทำให้ค่าของ canHarvest ไอเท็ม, สคริปต์จะไม่ให้มากกว่าหนึ่งรายการต่อเครื่องมือที่ตี
if canHarvest thenif canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falseendendหลังจากตั้งค่ามูลค่าเป็น false ตั้งค่าความโปร่งใสของชิ้นส่วนเป็น 1 (มองไม่เห็น) และ CanCollide เป็น false หมายถึงผู้เล่นไม่สามารถสัมผัสได้
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falseendพิมพ์ task.wait(5) เพื่อให้เวลาสำหรับรีเซ็ตรายการ 5 เป็นตัวเลขที่แนะนำ และอาจแตกต่างกันไปตามระยะเวลาที่คุณต้องการสำหรับประสบการณ์ของคุณ
if canHarvest.Value == true and playerItems.Value < playerSpaces.Value thenplayerItems.Value += 1canHarvest.Value = falsepartTouched.Transparency = 1partTouched.CanCollide = falsetask.wait(5)endรหัสCanHarvest เป็น true และรีเซ็ต Transparency และ CanCollide เป็นค่าเริ่มต้นของพวกเขา
task.wait(5)canHarvest.Value = truepartTouched.Transparency = 0partTouched.CanCollide = trueendเล่นโครงการและตรวจสอบ:
- ผู้เล่นเฉพาะได้รับ 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)