ProximityPrompt ออบเจ็กต์ ช่วยกระตุ้นการมีส่วนร่วมของผู้ใช้เพื่อกระตุ้นการกระทำเมื่อพวกเขาเข้าใกล้วัตถุในประสบการณ์ เช่น ประตู, สวิทช์ไฟ และปุ่มต่างๆ โดยใช้ออบเจ็กต์นี้ คุณสามารถ:
- ระบุว่าผู้ใช้สามารถมีส่วนร่วมกับวัตถุใดในประสบการณ์
- แสดงการกระทำที่ผู้ใช้สามารถทำกับวัตถุ จากนั้นกระตุ้นการกระทำผ่านการป้อนข้อมูลของผู้ใช้ เช่น การกดหรือการกดค้างไว้ที่ปุ่ม
- แสดงการป้อนข้อมูลที่ถูกต้องสำหรับการป้อนข้อมูลประเภทต่างๆ เช่น แป้นพิมพ์, เกมแพด, และ ปุ่มหน้าจอสัมผัส
สร้างการแสดงการใกล้ชิด
คุณต้องทำให้การแสดงการใกล้ชิดเป็นส่วนหนึ่งของชิ้นส่วน, โมเดล, หรือการเชื่อมต่อที่คุณต้องการให้ผู้ใช้มีส่วนร่วมด้วย เพื่อเพิ่มการแสดงการใกล้ชิดไปยังออบเจ็กต์ BasePart, Model, หรือ Attachment:
ในหน้าต่าง Explorer, วางเมาส์เหนือ BasePart, Model, หรือ Attachment และคลิกที่ปุ่ม ⊕ เมนูบริบทจะปรากฏขึ้น
จากเมนู ให้แทรก ProximityPrompt.

ปรับแต่งการแสดงการใกล้ชิด
คุณสามารถปรับแต่งการแสดงการใกล้ชิดได้ตามวิธีที่คุณต้องการให้มัน ปรากฏ, เมื่อใดที่คุณต้องการให้มัน มองเห็น, และสิ่งที่คุณต้องการให้ผู้ใช้ทำเพื่อ กระตุ้นการกระทำ.
ลักษณะ
การแสดงการใกล้ชิดจำเป็นต้องสื่อสารสามสิ่ง:
- วัตถุ ที่ผู้ใช้สามารถมีส่วนร่วมได้
- การกระทำ ที่กระตุ้นเมื่อพวกเขามีส่วนร่วมกับการแสดงการใกล้ชิด
- ปุ่ม ที่ผู้ใช้ต้องกดหรือกดค้าง
คุณสามารถระบุสิ่งเหล่านี้ได้ผ่านคุณสมบัติดังต่อไปนี้:
ObjectText ชื่อทางเลือกสำหรับวัตถุที่ผู้ใช้สามารถมีส่วนร่วมได้
ActionText ชื่อทางเลือกสำหรับการกระทำที่ผู้ใช้จะกระตุ้น
KeyboardKeyCode ปุ่มแป้นพิมพ์ที่ผู้ใช้ต้องกดหรือกดค้างเพื่อกระตุ้นการกระทำ
GamepadKeyCode ปุ่มเกมแพดที่ผู้ใช้ต้องกดหรือกดค้างเพื่อกระตุ้นการกระทำ

มองเห็น
คุณสามารถควบคุมว่าเมื่อใดที่การแสดงการใกล้ชิดมองเห็นได้ผ่านคุณสมบัติ MaxActivationDistance, RequiresLineOfSight, และ Exclusivity.
MaxActivationDistance
คุณสมบัติ MaxActivationDistance ช่วยให้คุณกำหนดระยะห่างรอบๆ ออบเจ็กต์ ProximityPrompt ที่เปิดใช้งานการมองเห็นของการแสดงการใกล้ชิด เมื่อใดก็ตามที่ตัวละครของผู้ใช้เข้ามาในระยะนั้น การแสดงการใกล้ชิดจะปรากฏให้เห็น

RequiresLineOfSight
คุณสมบัติ RequiresLineOfSight จะเปิดใช้งานการมองเห็นของการแสดงการใกล้ชิดเมื่อมีเส้นทางที่ชัดเจนจาก กล้อง ไปยังออบเจ็กต์ ProximityPrompt โดยดีฟอลต์คุณสมบัตินี้ถูกตั้งค่าเป็น true
Exclusivity
หากตัวละครของผู้ใช้อยู่ภายในระยะของการแสดงการใกล้ชิดหลายรายการ การมองเห็นของแต่ละการแสดงการใกล้ชิดจะขึ้นอยู่กับว่าอันไหนที่กล้องกำลังชี้ไปที่ และค่า Exclusivity ของแต่ละการแสดงการใกล้ชิด

การมีส่วนร่วม
คุณสามารถปรับแต่งวิธีที่ผู้ใช้มีปฏิสัมพันธ์กับการแสดงการใกล้ชิดผ่านคุณสมบัติ HoldDuration และ ClickablePrompt.
HoldDuration
คุณสมบัติ HoldDuration กำหนดจำนวนวินาทีที่ผู้ใช้ต้องกดปุ่มก่อนที่การกระทำของการแสดงการใกล้ชิดจะเกิดขึ้น หากคุณสมบัตินี้มีค่า 0, การกระทำของการแสดงการใกล้ชิดจะเกิดขึ้นทันที
ClickablePrompt
คุณสมบัติ ClickablePrompt ระบุว่าผู้ใช้สามารถคลิกที่การแสดงการใกล้ชิดเพื่อกระตุ้นการกระทำของมันหรือไม่ เมื่อถูกตั้งค่าเป็น true, ผู้ใช้สามารถโต้ตอบกับการแสดงการใกล้ชิดโดยการคลิกที่การแสดงโดยตรง หรือ โดยการกดปุ่มที่ระบุ เมื่อถูกตั้งค่าเป็น false, ผู้ใช้สามารถโต้ตอบกับการแสดงการใกล้ชิดได้เฉพาะการกดปุ่มที่ระบุเท่านั้น
สคริปต์แสดงการใกล้ชิด
คุณสามารถเชื่อมต่อกับเหตุการณ์การแสดงการใกล้ชิดได้ทั้งในออบเจ็กต์ ProximityPrompt เองหรือทั่วไประบบ ProximityPromptService. ระบบ ProximityPromptService ช่วยให้คุณจัดการพฤติกรรมการแสดงการใกล้ชิดทั้งหมดจากตำแหน่งเดียว, ป้องกันไม่ให้มีการเขียนโค้ดซ้ำในประสบการณ์ของคุณ
| เหตุการณ์ | คำอธิบาย |
|---|---|
| PromptTriggered | เกิดขึ้นเมื่อผู้เล่นโต้ตอบกับการแสดงการใกล้ชิด (หลังจากระยะเวลาสำหรับการแสดงที่มีค่า HoldDuration ที่ไม่เป็นศูนย์) |
| PromptTriggerEnded | เกิดขึ้นเมื่อผู้เล่นหยุดโต้ตอบกับการแสดงการใกล้ชิด |
| PromptButtonHoldBegan | เกิดขึ้นเมื่อผู้เล่นเริ่มโต้ตอบกับการแสดงการใกล้ชิดที่มีค่า HoldDuration ที่ไม่เป็นศูนย์ |
| PromptButtonHoldEnded | เกิดขึ้นเมื่อผู้เล่นหยุดโต้ตอบกับการแสดงการใกล้ชิดที่มีค่า HoldDuration ที่ไม่เป็นศูนย์ |
| PromptShown | เกิดขึ้นใน LocalScripts เมื่อการแสดงการใกล้ชิดปรากฏขึ้น |
| PromptHidden | เกิดขึ้นใน LocalScripts เมื่อการแสดงถูกซ่อน |
ตัวอย่างโค้ดต่อไปนี้รวมถึงโครงสร้างพื้นฐานสำหรับการใช้ 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)