เครื่องมือในเกม

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

เครื่องมือในเกม Tools เป็นเครื่องมือที่โต้ตอบได้ซึ่งผู้เล่นสามารถสวมใส่ในช่วงเซสชัน เช่น อาวุธ, ไม้เรียวเวทย์มนตร์, ไฟฉาย, กุญแจ, และอื่น ๆ คุณสามารถออกแบบเครื่องมือและรวมไว้ในคลังของผู้เล่นหรือวางไว้รอบโลกในฐานะที่เก็บได้

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

วัตถุ Tool เป็นพื้นฐานของเครื่องมือใด ๆ ใน Roblox ดังนั้นคุณจะต้องสร้างหนึ่งตัว มันง่ายกว่าที่จะดูตัวอย่างว่าเครื่องมือมีลักษณะอย่างไรโดยการออกแบบใน Workspace และต่อมาคุณสามารถทำให้มันเป็นรายการ คลัง หรือรายการ ที่ได้รับ/ซื้อ

  1. ในลำดับชั้น Explorer ให้เลื่อนเมาส์ไปที่ Workspace คลิกที่ปุ่ม และแทรก Tool

    วัตถุเครื่องมือที่สร้างขึ้นในพื้นที่ทำงาน
  2. เมื่อเลือก Tool ใหม่ ให้เข้าถึงหน้าต่าง Properties และปรับแต่งรูปลักษณ์ของเครื่องมือในคลังของผู้เล่น:

    • TextureId — ระบุ ID ของแอสเซตภาพสำหรับเครื่องมือในคลังของผู้เล่น
    • ToolTip — ชื่อป๊อปอัพเมื่อวางเมาส์เหนือเครื่องมือในคลังของผู้เล่น
  3. ตัดสินใจว่าเครื่องมือจะเป็นเครื่องมือ ทางกายภาพในสภาพแวดล้อม 3D (พบได้บ่อยที่สุด) หรือเป็นเครื่องมือ ที่ไม่ทางกายภาพ ที่เพียงแค่มีอยู่ในคลังของผู้เล่นและตอบสนองต่อการป้อนข้อมูลของพวกเขา

เครื่องมือทางกายภาพ

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

เพิ่มส่วนประกอบ/แบบจำลอง

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

ตัวเลือกข้อจำกัดที่ระบุในแถบเครื่องมือของ Studio

ตั้งค่าด้ามจับ

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

หากเครื่องมือประกอบด้วยเพียง MeshPart ชิ้นนั้นให้ตั้งชื่อว่า Handle หากไม่เช่นนั้นคุณสามารถรวมชิ้นส่วนแยกต่างหากชื่อ Handle เป็น ลูกหลานโดยตรง ของ Tool และเชื่อมต่อกับชิ้นส่วนอื่นด้วย WeldConstraint หรือ ข้อจำกัดเชิงกล

ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเครื่องมือมีอินสแตนซ์สามชิ้น: แบบจำลอง Handle ข้อจำกัดเชือก RopeConstraint และแบบจำลองโคมไฟที่แขวนจากเชือก

ปรับตำแหน่ง/ทิศทางการจับ

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

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

โคมไฟลากอยู่บนพื้นด้วย Grip.Position ของ (0, -2, 0) และ Grip.Orientation ของ (-90, 0, 0)
โคมไฟอยู่ข้างหน้าตัวละครด้วย Grip.Position ของ (0, -1.5, 0) และ Grip.Orientation ของ (25, 0, 0)

เครื่องมือที่ไม่ทางกายภาพ

เครื่องมือที่ไม่ทางกายภาพ 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.Parent
for _, item in backpack:GetChildren() do
if item:IsA("Tool") then
item.Parent = ReplicatedStorage
end
end
-- เปลี่ยนเครื่องมือไปยังกระเป๋าในลำดับที่ระบุ
for i = 1, #order do
local tool = ReplicatedStorage:FindFirstChild(order[i])
if tool then
tool.Parent = backpack
end
end

เครื่องมือที่เก็บได้

หากคุณต้องการให้ผู้เล่นสามารถเก็บเครื่องมือทางกายภาพในขณะที่ 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.LocalPlayer
local backpack = player:WaitForChild("Backpack")
-- สร้างภาพซ้ำของเครื่องมือ
local tool = ReplicatedStorage:FindFirstChild("WaterSpell")
if tool then
local 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:

เครื่องมือLocalScriptScript
ไม้เรียวของผู้สร้างตรวจสอบว่าสถานที่ที่ผู้เล่นเปิดใช้งานเครื่องมือ (Activated()).สร้างส่วนใหม่ที่ตำแหน่งในโลก 3D ที่ผู้เล่นสัมผัสหรือคลิก.
ผ้าคลุมทำให้มองไม่เห็นตรวจสอบเมื่อผู้เล่นสวมใส่เครื่องมือ (Equipped()) หรือถอดเครื่องมือ (Unequipped()).ทำให้ผู้เล่นไม่สามารถมองเห็นผู้เล่นคนอื่นขณะสวมผ้าคลุมและคืนสภาพการมองเห็นให้ผู้เล่นเมื่อถอดผ้าคลุม.
Mega‑Bowตรวจสอบระยะเวลาที่ผู้เล่นเปิดใช้งานเครื่องมือ (เวลาระหว่าง Activated() และ Deactivated()).ยิงลูกศรเวทย์ด้วยพลังมากหรือน้อยขึ้นอยู่กับระยะเวลาการเปิดใช้งานที่ตรวจพบ.
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ