เครื่องมือในเกม Tools เป็นเครื่องมือที่โต้ตอบได้ซึ่งผู้เล่นสามารถสวมใส่ในช่วงเซสชัน เช่น อาวุธ, ไม้เรียวเวทย์มนตร์, ไฟฉาย, กุญแจ, และอื่น ๆ คุณสามารถออกแบบเครื่องมือและรวมไว้ในคลังของผู้เล่นหรือวางไว้รอบโลกในฐานะที่เก็บได้
สร้างเครื่องมือในเกม
วัตถุ Tool เป็นพื้นฐานของเครื่องมือใด ๆ ใน Roblox ดังนั้นคุณจะต้องสร้างหนึ่งตัว มันง่ายกว่าที่จะดูตัวอย่างว่าเครื่องมือมีลักษณะอย่างไรโดยการออกแบบใน Workspace และต่อมาคุณสามารถทำให้มันเป็นรายการ คลัง หรือรายการ ที่ได้รับ/ซื้อ
เมื่อเลือก Tool ใหม่ ให้เข้าถึงหน้าต่าง Properties และปรับแต่งรูปลักษณ์ของเครื่องมือในคลังของผู้เล่น:
- TextureId — ระบุ ID ของแอสเซตภาพสำหรับเครื่องมือในคลังของผู้เล่น
- ToolTip — ชื่อป๊อปอัพเมื่อวางเมาส์เหนือเครื่องมือในคลังของผู้เล่น

ตัดสินใจว่าเครื่องมือจะเป็นเครื่องมือ ทางกายภาพในสภาพแวดล้อม 3D (พบได้บ่อยที่สุด) หรือเป็นเครื่องมือ ที่ไม่ทางกายภาพ ที่เพียงแค่มีอยู่ในคลังของผู้เล่นและตอบสนองต่อการป้อนข้อมูลของพวกเขา
เครื่องมือทางกายภาพ
หลังจากสร้างอินสแตนซ์ Tool สำหรับเครื่องมือทางกายภาพแล้ว คุณจะต้อง เพิ่ม ส่วนประกอบ/แบบจำลอง เพื่อสร้างลักษณะในโลก 3D นอกจากนี้คุณยังต้องรวม ด้ามจับ ซึ่งตัวละครผู้เล่นจะ จับ
เพิ่มส่วนประกอบ/แบบจำลอง
เครื่องมือในเกมสามารถประกอบด้วย Parts และ/หรือ MeshParts หนึ่งหรือหลายชิ้น หากคุณสร้างเครื่องมือจากหลายชิ้น อย่าลืมเชื่อมต่อพวกมันทั้งหมดโดยใช้ WeldConstraints หรือ ข้อจำกัดเชิงกล อื่น ๆ เพื่อให้เครื่องมือคงสภาพเป็นหน่วยในขณะที่ผู้เล่นถือมัน

ตั้งค่าด้ามจับ
เพื่อเปิดโอกาสให้ผู้เล่นถือเครื่องมือได้ หนึ่งชิ้นส่วนของเครื่องมือจำเป็นต้องมีชื่อว่า Handle นี่คือจุดที่เครื่องมือจะเชื่อมต่อกับชิ้นส่วน RightHand ของโมเดลตัวละคร (R15) หรือ Right Arm (R6)
หากเครื่องมือประกอบด้วยเพียง MeshPart ชิ้นนั้นให้ตั้งชื่อว่า Handle หากไม่เช่นนั้นคุณสามารถรวมชิ้นส่วนแยกต่างหากชื่อ Handle เป็น ลูกหลานโดยตรง ของ Tool และเชื่อมต่อกับชิ้นส่วนอื่นด้วย WeldConstraint หรือ ข้อจำกัดเชิงกล
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเครื่องมือมีอินสแตนซ์สามชิ้น: แบบจำลอง Handle ข้อจำกัดเชือก RopeConstraint และแบบจำลองโคมไฟที่แขวนจากเชือก

ปรับตำแหน่ง/ทิศทางการจับ
คุณสมบัติ Grip ของเครื่องมือเป็น CFrame ซึ่งกำหนดตำแหน่งและทิศทางของเครื่องมือเมื่อเปรียบเทียบกับตัวละครที่ถือมัน

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


เครื่องมือที่ไม่ทางกายภาพ
เครื่องมือที่ไม่ทางกายภาพ Tool จะมีอยู่ในคลังของผู้เล่น inventory และตอบสนองต่อการป้อนข้อมูลของพวกเขา ตัวอย่างเช่น เกมแนวบทบาทอาจมีชุดของคาถาเวทย์มนตร์ที่ผู้เล่นสามารถ "ใช้" ผ่านคลังของพวกเขา

เครื่องมือที่ไม่ทางกายภาพไม่ต้องการการสร้าง 3D และไม่ใช้ชิ้นส่วน Handle ดังนั้นคุณควร ปิดการใช้งาน คุณสมบัติ RequiresHandle ของเครื่องมือ:

เพิ่มเครื่องมือในเกม
เมื่อคุณเสร็จสิ้น การสร้าง เครื่องมือในเกมของคุณ คุณจะต้องวางในพื้นที่ที่ถูกต้องในลำดับชั้น Explorer สถานที่ที่คุณวางเครื่องมือในลำดับชั้นขึ้นอยู่กับการใช้งานที่ตั้งใจไว้
คลังของผู้เล่น
หากคุณต้องการให้ผู้เล่นทุกคนเริ่มต้นด้วยเครื่องมือในคลังของพวกเขา ผู้ให้ภายใน StarterPack เมื่อตัวผู้เล่นใด ๆ ปรากฏ ระบบจะคัดลอกเครื่องมือไปยัง Backpack ของพวกเขา จากนั้นผู้เล่นสามารถสวมใส่เครื่องมือโดยคลิกที่ไอคอนคลังของมันหรือโดยการกดปุ่มร้อนที่เกี่ยวข้องเช่น 1 หรือ 2

โปรดทราบว่าเครื่องมือจะถูกคัดลอกไปยังคลังของผู้เล่น (Backpack) ตามลำดับที่เพิ่มเข้าไปใน StarterPack สำหรับการจัดลำดับที่ถูกควบคุมมากขึ้น คุณสามารถเพิ่ม LocalScript ไปยัง StarterPack ซึ่งจะทำให้เครื่องมือย้ายไปที่ ReplicatedStorage ชั่วคราวแล้วย้ายไปยัง Backpack ตามลำดับที่ระบุในตาราง order
เปลี่ยนลำดับคลังlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local order = {"WaterSpell", "FireSpell", "AirSpell", "EarthSpell"}local backpack = script.Parentfor _, item in backpack:GetChildren() doif item:IsA("Tool") thenitem.Parent = ReplicatedStorageendend-- เปลี่ยนเครื่องมือไปยังกระเป๋าในลำดับที่ระบุfor i = 1, #order dolocal tool = ReplicatedStorage:FindFirstChild(order[i])if tool thentool.Parent = backpackendend
เครื่องมือที่เก็บได้
หากคุณต้องการให้ผู้เล่นสามารถเก็บเครื่องมือทางกายภาพในขณะที่ erk7g3x23มค้นโลก 3D ให้วางเครื่องมือใน Workspace เช่นเดียวกับวัตถุ 3D ปกติ เครื่องมือที่เก็บได้จะถูกติดตั้งอัตโนมัติและเพิ่มไปยังคลังของผู้เล่น (คุณไม่จำเป็นต้องเพิ่มการตรวจจับการชนเพิ่มเติมเพื่อให้ตัวละครเก็บเครื่องมือ)
ตามที่กล่าวไว้ในส่วน add parts/meshes ส่วนของเครื่องมือไม่ควรเป็น Anchored เนื่องจากตัวละครผู้เล่นจะติดอยู่เมื่อพวกเขาเก็บหรือสวมใส่เครื่องมือที่ถูกตรึง อย่างไรก็ตาม หากคุณต้องการตรึงเครื่องมือที่เก็บได้ในสถานที่เฉพาะในโลก 3D เช่น การลอยอยู่เหนือพื้นดินเล็กน้อยคุณสามารถเพิ่ม Script ต่อไปนี้ให้กับเครื่องมือเพื่อยกเลิกการตรึงชิ้นส่วนเมื่อถูกเก็บ
ยกเลิกการตรึงเครื่องมือเมื่อสวมใส่/เก็บ
local tool = script.Parent
tool.Equipped:Connect(function()
for _, part in tool:GetDescendants() do
if part:IsA("BasePart") and part.Anchored then
part.Anchored = false
end
end
end)
เครื่องมือที่ได้รับ/ซื้อ
หากคุณต้องการตั้งค่าเครื่องมือเป็นรางวัลเมื่อผู้เล่นทำภารกิจสำเร็จหรือเสนอเครื่องมือสำหรับขายในร้านค้าในเกม ให้วางเครื่องมือเหล่านั้นใน ReplicatedStorage จากที่นั่นคุณสามารถ Clone() เครื่องมือไปยัง Backpack ของผู้เล่นในเวลาที่เหมาะสม

Clone เครื่องมือไปยังคลังของผู้เล่นlocal Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local player = Players.LocalPlayerlocal backpack = player:WaitForChild("Backpack")-- สร้างภาพซ้ำของเครื่องมือlocal tool = ReplicatedStorage:FindFirstChild("WaterSpell")if tool thenlocal clone = tool:Clone()clone.Parent = backpack -- เพิ่มภาพซ้ำไปยังกระเป๋าของผู้เล่นend
ใช้เอฟเฟกต์เครื่องมือ
หลังจาก เพิ่มเครื่องมือในเกมของคุณ คุณสามารถดำเนินการสคริปต์เพื่อให้ผู้เล่นสามารถใช้เครื่องมือของพวกเขาและทำงานที่ต้องการ เครื่องมือที่เฉพาะเจาะจงจะเกิดเหตุการณ์แสดงถึงสถานะของเครื่องมือและการป้อนข้อมูลของผู้เล่นกับมัน
- Equipped() — จะถูกเรียกเมื่อผู้เล่นเลือกเครื่องมือจากกระเป๋าของพวกเขา
- Unequipped() — จะถูกเรียกเมื่อผู้เล่นเปลี่ยนเครื่องมือหรือลงจากเครื่องมือ
- Activated() — จะถูกเรียกเมื่อผู้เล่นเริ่มเปิดใช้งานเครื่องมือ (คลิก, แตะ, หรือกดปุ่มทริกเกอร์ด้านหลังขวาบนจอยสติ๊ก)
- Deactivated() — จะถูกเรียกเมื่อผู้เล่นหยุดการป้อนข้อมูลการเปิดใช้งาน (ปล่อยปุ่มหรือติดต่อ)
เทมเพลตเหตุการณ์เครื่องมือ
local tool = script.Parent
local function onEquip()
print(tool.Name, "เครื่องมือถูกสวมใส่")
end
local function onUnequip()
print(tool.Name, "เครื่องมือถูกถอด")
end
local function onActivate()
print(tool.Name, "เครื่องมือถูกเปิดใช้งาน")
end
local function onDeactivate()
print(tool.Name, "เครื่องมือถูกปิดใช้งาน")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
เหตุการณ์เครื่องมือจะเกิดขึ้นเฉพาะใน LocalScripts ด้านคลายเท่านั้น เพราะอุปกรณ์ของผู้เล่นเท่านั้นที่รู้เมื่อมีการเกิดขึ้น input ดังนั้นจึงต้องการเครื่องมือส่วนใหญ่ทั้ง LocalScript และ Script ฝั่งเซิร์ฟเวอร์ซึ่งแต่ละอันจัดการด้านพฤติกรรมของเครื่องมือ และ RemoteEvent ส่งข้อมูลจากไคลเอนต์ไปยังเซิร์ฟเวอร์ (ดู เหตุการณ์และการเรียกกลับที่เกี่ยวกับระยะไกล เพื่อข้อมูลเพิ่มเติม)
ต่อไปเป็นตัวอย่างเครื่องมือและพฤติกรรมของพวกเขาที่จัดการโดย LocalScript หรือ Script:
| เครื่องมือ | LocalScript | Script |
|---|---|---|
| ไม้เรียวของผู้สร้าง | ตรวจสอบว่าสถานที่ที่ผู้เล่นเปิดใช้งานเครื่องมือ (Activated()). | สร้างส่วนใหม่ที่ตำแหน่งในโลก 3D ที่ผู้เล่นสัมผัสหรือคลิก. |
| ผ้าคลุมทำให้มองไม่เห็น | ตรวจสอบเมื่อผู้เล่นสวมใส่เครื่องมือ (Equipped()) หรือถอดเครื่องมือ (Unequipped()). | ทำให้ผู้เล่นไม่สามารถมองเห็นผู้เล่นคนอื่นขณะสวมผ้าคลุมและคืนสภาพการมองเห็นให้ผู้เล่นเมื่อถอดผ้าคลุม. |
| Mega‑Bow | ตรวจสอบระยะเวลาที่ผู้เล่นเปิดใช้งานเครื่องมือ (เวลาระหว่าง Activated() และ Deactivated()). | ยิงลูกศรเวทย์ด้วยพลังมากหรือน้อยขึ้นอยู่กับระยะเวลาการเปิดใช้งานที่ตรวจพบ. |
