Bạn có thể tạo các thông báo cảm biến tương tác xuất hiện khi người dùng tiếp cận các đối tượng trong không gian 3D, sau đó kích hoạt các hành động trên nhập lệ của người dùng.
Hướng dẫn này sử dụng dự án Dungeon Delve như một bảng trưng bày. Để theo dõi, mở nó trong Studio trước khi tiến hành.

Tạo một thông báo
Các lời nhắc trên màn hình được tạo bởi một đối tượng ProximityPrompt được gán cho một Attachment , BasePart hoặc Model .
Chọn mô hình Cửa Nhà Tù trong cửa sổ 3D hoặc từ Explorer ( Không gian làm việc → Vật phẩm thông báo → Cửa Nhà Tù ).
Mở rộng cây của nó và chọn đối tượng Cửa .
Đặt một lời nhắc trên Attachment cho phép bạn kiểm soát nhiều hơn về nơi mà điểm tương tác xảy ra, so với việc đặt nó trực tiếp trên phần/mô hình.Thêm một tệp mới Phụ lục và đổi tên thành Phụ lục Nhanh .
Tìm thuộc tính vị trí của phần mở rộng mới Position và đặt nó thành -2.25 , -0.5 , - 0.5 .Điều này sẽ di chuyển nó trước lỗ khóa của cửa.
Chuyển qua PromptAttachment và chèn một đối tượng mới ProximityPrompt .
Xuất hiện thông ngoại hình
Lời nhắc bao gồm ba thành phần chính, mỗi thành phần có thể được kiểm soát bởi các thuộc tính sau:

- Văn bản đối tượng — Một tên tùy chọn cho đối tượng đang tương tác.
- Tên hành động — Một tên hành động tùy chọn được hiển thị cho người dùng.
- KeyboardKeyCode — Phím bàn phím sẽ kích hoạt lời nhắc.
- GamepadKeyCode — Nút gamepad sẽ kích hoạt lời nhắc.
Để tùy chỉnh sự xuất hiện của lời nhắc cửa nhà tù, hãy thực hiện các thay đổi sau:
Trong cửa sổ Thuộc tính, tìm thấy thuộc tính ObjectText và nhập Cửa .
Đối với thuộc tính ActionText , hãy nhập Pick Lock .
Khoảng cách kích hoạt
Các thông báo xuất hiện khi nhân vật của người dùng di chuyển trong phạm vi MaxActivationDistance được xác định của đối tượng thông báo.

Giá trị mặc định hoạt động tốt trong hầu hết các trường hợp, nhưng bạn có thể đẩy tương tác người dùng gần hơn với việc khóa bằng cách thay đổi MaxActivationDistance thành 4 .

Giữ thời gian
Giá trị thuộc tính HoldDuration xác định tốc độ mà hành động của lời nhắc được kích hoạt nhanh chóng, trong giây lát.Vì cửa này phải được chọn để mở khóa, thay đổi thuộc tính Thời gian giữ thành 4 .

Thực hiện một hành động
Cách tốt nhất để phát hiện sự kiện nhanh là thông qua ProximityPromptService - điều này cho phép bạn phát hiện sự kiện tập trung mà không gắn kết một kịch bản vào mỗi đối tượng thông báo.
Một khung cơ bản như sau:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Phát hiện khi lời nhắc được kích hoạt
local function onPromptTriggered(promptObject, player)
end
-- Phát hiện khi giữ lâu bắt đầu
local function onPromptHoldBegan(promptObject, player)
end
-- Phát hiện khi kết thúc giữ lời nhắc
local function onPromptHoldEnded(promptObject, player)
end
-- Kết nối sự kiện nhắc nhở với chức năng xử lý
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Sự kiện | Mô tả |
---|---|
PromptTriggered | Bắt lửa khi người dùng tương tác với một lời nhắc ( sau thời gian cho một lời nhắc với không phải là không HoldDuration ). |
PromptButtonHoldBegan | Bắt lửa khi một người dùng bắt đầu tương tác với một lời nhắc không bằng không HoldDuration . |
PromptButtonHoldEnded | Bắt lửa khi một người dùng ngừng tương tác với một lời nhắc không bằng không HoldDuration |
Trong dự án Dungeon Delve, các sự kiện này được quản lý bởi kịch bản PromptEvents trong ServerScriptService .

Bên trong kịch bản, các sự kiện trên chỉ gọi chức năng bên trong ObjectActions ModuleScript , cũng nằm trong ServerScriptService .
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Phát hiện khi lời nhắc được kích hoạt
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Phát hiện khi giữ lâu bắt đầu
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Phát hiện khi kết thúc giữ lời nhắc
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Kết nối sự kiện nhắc nhở với chức năng xử lý
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Các thông báo cảm biến là một giải pháp tiện lợi và có thể tùy chỉnh cho tương tác đối tượng trong trò chơi.Xem các trang tham khảo ProximityPrompt và ProximityPromptService để có thêm cách để kiểm soát hành vi thông báo, và khám phá các đối tượng tương tác khác trong Dungeon Delve để có cảm hứng sáng tạo.