คุณสามารถสร้างคำสั่งเชิงโต้ตอบที่ปรากฏเมื่อผู้ใช้เข้าใกล้วัตถุในพื้นที่ 3D จากนั้นกระตุ้นการกระทำเมื่อผู้ใช้ป้อนข้อมูล
บทเรียนนี้ใช้โครงการ Dungeon Delve เป็นตัวอย่าง เพื่อทำตามขั้นตอนนี้ให้เปิดโครงการใน Studio ก่อนดำเนินการต่อ

สร้างคำสั่ง
คำสั่งที่ปรากฏบนหน้าจอจะถูกสร้างโดยวัตถุ ProximityPrompt ที่เชื่อมโยงกับ Attachment, BasePart, หรือ Model
เลือกโมเดล PrisonDoor ในมุมมอง 3D หรือจาก Explorer (Workspace → PromptObjects → PrisonDoor)


ขยายต้นไม้ของมันและเลือกวัตถุ Door

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

ค้นหาคุณสมบัติ Position ของการเชื่อมต่อใหม่และตั้งค่าเป็น -2.25, -0.5, -0.5 ซึ่งจะทำให้มันเคลื่อนที่ไปข้างหน้าของรูล็อคประตู


เลื่อนเมาส์ไปที่ PromptAttachment และใส่วัตถุ ProximityPrompt ใหม่

ลักษณะของคำสั่ง
คำสั่งประกอบด้วยสามองค์ประกอบหลัก ซึ่งแต่ละองค์ประกอบสามารถควบคุมได้โดยคุณสมบัติดังต่อไปนี้:

- ObjectText — ชื่อที่เลือกได้สำหรับวัตถุที่กำลังโต้ตอบ
- ActionText — ชื่อการกระทำที่เลือกได้ซึ่งแสดงให้ผู้ใช้เห็น
- KeyboardKeyCode — คีย์บอร์ดที่กระตุ้นคำสั่ง
- GamepadKeyCode — ปุ่มเกมแพดที่กระตุ้นคำสั่ง
เพื่อปรับแต่งลักษณะของคำสั่งประตูคุก ให้ทำการเปลี่ยนแปลงดังต่อไปนี้:
ในหน้าต่าง Properties ค้นหาคุณสมบัติ ObjectText และพิมพ์ Door

สำหรับคุณสมบัติ ActionText ให้พิมพ์ Pick Lock

ระยะการเปิดใช้งาน
คำสั่งจะปรากฏเมื่อ ตัวละคร ของผู้ใช้เคลื่อนที่ภายในระยะ MaxActivationDistance ที่กำหนดของผู้ปกครองวัตถุคำสั่ง

ค่าดีฟอลต์ทำงานได้ดีในกรณีส่วนใหญ่ แต่คุณสามารถทำให้การโต้ตอบของผู้ใช้ใกล้ล็อคมากขึ้นโดยการเปลี่ยน MaxActivationDistance เป็น 4

ระยะเวลาการถือ
ค่าคุณสมบัติ HoldDuration จะกำหนดว่าการกระทำของคำสั่งจะถูกกระตุ้นอย่างรวดเร็วเพียงใดในวินาที เนื่องจากประตูนี้ต้องถูกเปิดล็อคเพื่อปลดล็อค ให้เปลี่ยนค่าคุณสมบัติ HoldDuration เป็น 4

นำไปใช้การกระทำ
วิธีที่ดีที่สุดในการตรวจจับเหตุการณ์คำสั่งคือผ่าน ProximityPromptService — ซึ่งช่วยให้คุณตรวจจับเหตุการณ์ได้อย่างศูนย์กลางโดยไม่ต้องแนบสคริปต์ไปยังวัตถุคำสั่งแต่ละรายการ
โครงสร้างพื้นฐานพื้นฐานมีดังนี้:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- ตรวจจับเมื่อคำสั่งถูกกระตุ้น
local function onPromptTriggered(promptObject, player)
end
-- ตรวจจับเมื่อการถือคำสั่งเริ่มต้น
local function onPromptHoldBegan(promptObject, player)
end
-- ตรวจจับเมื่อการถือคำสั่งสิ้นสุด
local function onPromptHoldEnded(promptObject, player)
end
-- เชื่อมต่อเหตุการณ์คำสั่งกับฟังก์ชันการจัดการ
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)| เหตุการณ์ | คำอธิบาย |
|---|---|
| PromptTriggered | เกิดขึ้นเมื่อผู้ใช้โต้ตอบกับคำสั่ง (หลังจากระยะเวลาสำหรับคำสั่งที่มี HoldDuration ที่ไม่เป็นศูนย์) |
| PromptButtonHoldBegan | เกิดขึ้นเมื่อผู้ใช้เริ่มโต้ตอบกับคำสั่งที่มี HoldDuration ที่ไม่เป็นศูนย์ |
| PromptButtonHoldEnded | เกิดขึ้นเมื่อผู้ใช้หยุดโต้ตอบกับคำสั่งที่มี HoldDuration ที่ไม่เป็นศูนย์ |
ในโครงการ Dungeon Delve เหตุการณ์เหล่านี้จะถูกจัดการโดยสคริปต์ PromptEvents ภายใน ServerScriptService

ภายในสคริปต์ เหตุการณ์ข้างต้นจะเรียกฟังก์ชันภายใน ModuleScript ObjectActions ซึ่งตั้งอยู่ใน ServerScriptService เช่นกัน
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- ตรวจจับเมื่อคำสั่งถูกกระตุ้น
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- ตรวจจับเมื่อการถือคำสั่งเริ่มต้น
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- ตรวจจับเมื่อการถือคำสั่งสิ้นสุด
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- เชื่อมต่อเหตุการณ์คำสั่งกับฟังก์ชันการจัดการ
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)คำสั่งใกล้เคียงเป็นโซลูชันที่สะดวกและปรับแต่งได้สำหรับการโต้ตอบกับวัตถุในเกม ตรวจสอบหน้าอ้างอิง ProximityPrompt และ ProximityPromptService สำหรับวิธีการเพิ่มเติมในการควบคุมพฤติกรรมของคำสั่ง และสำรวจวัตถุเชิงโต้ตอบอื่น ๆ ใน Dungeon Delve เพื่อแรงบันดาลใจในการสร้างสรรค์