คุณสามารถสร้างข้อความกระตุ้นเชิงโต้ตอบที่ปรากฏเมื่อผู้ใช้เข้าใกล้วัตถุในพื้นที่ 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 ใหม่.

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

- 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 สำหรับแรงบันดาลใจในการสร้างสรรค์