ProximityPrompt objects khuyến khích tương tác của người dùng để kích hoạt một hành động khi họ tiếp cận các vật thể trong trải nghiệm như cửa, công tắc đèn và nút bấm. Sử dụng đối tượng này, bạn có thể:
- Chỉ định những vật thể nào mà người dùng có thể tương tác trong trải nghiệm.
- Hiển thị hành động mà người dùng có thể thực hiện trên vật thể, sau đó kích hoạt hành động thông qua đầu vào từ người dùng như nhấn hoặc giữ phím.
- Hiển thị đầu vào đúng cho tất cả các loại đầu vào, chẳng hạn như bàn phím, tay cầm chơi game và phím màn hình cảm ứng.
Tạo yêu cầu khoảng cách
Bạn phải gán yêu cầu khoảng cách cho phần, mô hình hoặc đính kèm mà bạn muốn người dùng tương tác. Để thêm yêu cầu khoảng cách vào BasePart, Model, hoặc Attachment object:
Trong cửa sổ Explorer, di chuột qua BasePart, Model, hoặc Attachment và nhấp vào nút ⊕. Một menu ngữ cảnh sẽ hiển thị.
Trong menu, chèn một ProximityPrompt.

Tùy chỉnh yêu cầu khoảng cách
Bạn có thể tùy chỉnh yêu cầu khoảng cách dựa trên cách bạn muốn nó xuất hiện, khi nào bạn muốn nó hiện, và những gì bạn muốn người dùng làm để kích hoạt hành động.
Xuất hiện
Yêu cầu khoảng cách cần giao tiếp ba điều:
- vật thể mà người dùng có thể tương tác.
- hành động mà kích hoạt khi họ tương tác với yêu cầu khoảng cách.
- phím mà người dùng phải nhấn hoặc giữ.
Bạn có thể chỉ định những điều này thông qua các thuộc tính sau:
ObjectText Tên tùy chọn cho vật thể mà người dùng có thể tương tác.
ActionText Tên tùy chọn cho hành động mà người dùng sẽ kích hoạt.
KeyboardKeyCode Phím bàn phím mà người dùng phải nhấn hoặc giữ để kích hoạt hành động.
GamepadKeyCode Phím tay cầm mà người dùng phải nhấn hoặc giữ để kích hoạt hành động.

Tính khả thi
Bạn có thể kiểm soát khi nào yêu cầu khoảng cách hiển thị thông qua các thuộc tính MaxActivationDistance, RequiresLineOfSight, và Exclusivity.
MaxActivationDistance
Thuộc tính MaxActivationDistance cho phép bạn định nghĩa khoảng cách từ xung quanh đối tượng ProximityPrompt mà kích hoạt tính khả thi của yêu cầu khoảng cách. Một khi nhân vật của người dùng vào trong khoảng cách đó, yêu cầu khoảng cách sẽ trở nên hiển thị.

RequiresLineOfSight
Thuộc tính RequiresLineOfSight kích hoạt tính khả thi của yêu cầu khoảng cách khi có một con đường rõ ràng từ máy ảnh đến đối tượng ProximityPrompt. Theo mặc định, thuộc tính này được đặt thành true.
Exclusivity
Nếu nhân vật của người dùng nằm trong khoảng cách của nhiều yêu cầu khoảng cách, sự hiển thị của mỗi yêu cầu khoảng cách phụ thuộc vào yêu cầu nào mà máy ảnh đang hướng đến, cũng như giá trị thuộc tính Exclusivity của từng yêu cầu khoảng cách.

Tính tương tác
Bạn có thể tùy chỉnh cách người dùng tương tác với yêu cầu khoảng cách qua các thuộc tính HoldDuration và ClickablePrompt.
HoldDuration
Thuộc tính HoldDuration xác định số giây mà người dùng phải nhấn một phím trước khi hành động của yêu cầu khoảng cách được kích hoạt. Nếu thuộc tính này có giá trị là 0, hành động của yêu cầu khoảng cách sẽ được kích hoạt ngay lập tức.
ClickablePrompt
Thuộc tính ClickablePrompt chỉ định xem người dùng có thể nhấp vào yêu cầu khoảng cách để kích hoạt hành động của nó hay không. Khi được đặt thành true, người dùng có thể tương tác với yêu cầu khoảng cách bằng cách nhấp trực tiếp vào yêu cầu khoảng cách hoặc bằng cách nhấn phím đã chỉ định. Khi được đặt thành false, người dùng chỉ có thể tương tác với yêu cầu khoảng cách bằng cách nhấn phím đã chỉ định.
Kịch bản yêu cầu khoảng cách
Bạn có thể kết nối với các sự kiện yêu cầu khoảng cách either trên chính đối tượng ProximityPrompt hoặc toàn cục thông qua ProximityPromptService. ProximityPromptService cho phép bạn quản lý tất cả hành vi yêu cầu khoảng cách từ một vị trí, ngăn ngừa bất kỳ nhu cầu nào cho mã lặp lại trong trải nghiệm của bạn.
| Sự kiện | Mô tả |
|---|---|
| PromptTriggered | Kích hoạt khi một người chơi tương tác với yêu cầu khoảng cách (sau khoảng thời gian cho một yêu cầu có HoldDuration không bằng 0). |
| PromptTriggerEnded | Kích hoạt khi người chơi ngừng tương tác với yêu cầu khoảng cách. |
| PromptButtonHoldBegan | Kích hoạt khi một người chơi bắt đầu tương tác với một yêu cầu khoảng cách có giá trị HoldDuration không bằng 0. |
| PromptButtonHoldEnded | Kích hoạt khi một người chơi ngừng tương tác với một yêu cầu khoảng cách có giá trị HoldDuration không bằng 0. |
| PromptShown | Kích hoạt trong LocalScripts khi một yêu cầu khoảng cách được làm cho hiển thị. |
| PromptHidden | Kích hoạt trong LocalScripts khi một yêu cầu được ẩn. |
Mẫu mã sau đây bao gồm một khung cơ bản để sử dụng ProximityPromptService:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Phát hiện khi yêu cầu được kích hoạt
local function onPromptTriggered(promptObject, player)
end
-- Phát hiện khi bắt đầu giữ yêu cầu
local function onPromptHoldBegan(promptObject, player)
end
-- Phát hiện khi kết thúc giữ yêu cầu
local function onPromptHoldEnded(promptObject, player)
end
-- Kết nối các sự kiện yêu cầu với các hàm xử lý
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)