Bạn có thể tạo các thông báo gần gũi tương tác xuất hiện khi người dùng tiếp cận các thể hiện trong không gian 3D, sau đó kích thích hành động trên đầu vào của người dùng.
Hướng dẫn này sử dụng dự án Dungeon Delve như một bàn 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 hộp thoại trên màn hình được tạo bởi một đối tượng ProximityPrompt có liên quan đến một Attachment , BasePart hoặc 1> Class.Model1> .
Chọn mô hình PrisonDoor trong 3D view hoặc từ Explorer ( Workspace → PromptObjects → 1> PrisonDoor1> ).
Mở rộng cây của nó và chọn đối tượng Cửa .
Đặt một hộp thoại trên một Attachment cho phép bạn kiểm soát tốt hơn về nơi mà điểm tương tác xảy ra, thay vì đặt nó trực tiếp trên bộ phận/mô hình. Thêm một Attachment Mới và đổi tên nó thành PromptArrow .
Tìm địa chỉ vị trí mới của đầu mối tại địa chỉ -2.25 , -0.5 , - 1> 0.51> . Điều này sẽ di chuyển nó đến phía trước của lỗ chìa khóa cửa.
Di chuột qua PromptRotation và nhúc nhích một đối tượng mới ProximityPrompt .
Nhận xét nhanh
Yêu cầu bao gồm ba yếu tố chính, mỗi yếu tố có thể được điều khiển bởi các thuộc tính sau đây:
- ObjectText — Tên bắt buộc cho đối tượng đang tương tác.
- ActionText — Tên hành động bắt buộc được hiển thị cho người dùng.
- KeyboardKeyCode — Chìa khóa bàn phím sẽ kích hoạt hộp thoại.
- GamepadKeyCode — nút gamepad mà sẽ kích hoạt hộp thoại.
Để tùy chỉnh vẻ ngoài của cửa tù, hãy thực hiện các thay đổi sau đây:
Trong cửa sổ Proprietades, tìm kiếm property ObjectText và nhập Door .
Đối với ActionText tính năng, hãy nhập Lựa chọn Khóa .
Khoảng cách kích hoạt
Các hộp thoại xuất hiện khi nhân vật của người dùng di chuyển trong phạm vi MaxActivationDistance định nghĩa của thể hiện.
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 gần hơn về phía người dùng bằng cách thay đổi MaxActivationDistance lên 4 .
Giữ độ dài
Giá trị HoldDuration của thuộc tính Trình duyệt sẽ được kích hoạt nhanh chóng, trong giây lát. Khi cửa này được mở, thay đổi giá trị HoldDuration thành 2> 42> .
Thực hiện một Hành Động
Cách tốt nhất để phát hiện sự kiện hộp thoại là thông qua ProximityPromptService — điều này cho phép bạn phát hiện sự kiện trung tâm mà không cần kết nối một script với mỗi đối tượng hộp thoại.
Một khung cơ bản như sau:
local ProximityPromptService = game:GetService("ProximityPromptService")
-- Ngược khi nào đòi hỏi được kích hoạt
local function onPromptTriggered(promptObject, player)
end
-- Nhận xét khi dấu hiệu giữ nhấp bắt đầu
local function onPromptHoldBegan(promptObject, player)
end
-- Nhận xét khi hộp thông báo kết thúc
local function onPromptHoldEnded(promptObject, player)
end
-- Kết nối các sự kiện hộp thoại đến các chức năng xử lý
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Sự kiện | Mô tả |
---|---|
PromptTriggered | Kích hoạt khi một người tương tác với một thông báo ( sau thời gian cho một thông báo với không phải là zero HoldDuration ). |
PromptButtonHoldBegan | Lửa khi một người bắt đầu tương tác với một thông báo không phải là zero HoldDuration . |
PromptButtonHoldEnded | Kích hoạt khi một người dừng tương tác với một thông báo không phải là zero HoldDuration |
Trong dự án Dungeon Delve, các sự kiện này được quản lý bởi script PromptEvents trong ServerScriptService .
Trong script, các sự kiện trên chỉ đơn giản là gọi các hàm trong ObjectActionsModuleScript, cũng nằm trong ServerScriptService.
local ProximityPromptService = game:GetService("ProximityPromptService")
local ServerScriptService = game:GetService("ServerScriptService")
local ObjectActions = require(ServerScriptService.ObjectActions)
-- Ngược khi nào đòi hỏi được kích hoạt
local function onPromptTriggered(promptObject, player)
ObjectActions.promptTriggeredActions(promptObject, player)
end
-- Nhận xét khi dấu hiệu giữ nhấp bắt đầu
local function onPromptHoldBegan(promptObject, player)
ObjectActions.promptHoldBeganActions(promptObject, player)
end
-- Nhận xét khi hộp thông báo kết thúc
local function onPromptHoldEnded(promptObject, player)
ObjectActions.promptHoldEndedActions(promptObject, player)
end
-- Kết nối các sự kiện hộp thoại đến các chức năng xử lý
ProximityPromptService.PromptTriggered:Connect(onPromptTriggered)
ProximityPromptService.PromptButtonHoldBegan:Connect(onPromptHoldBegan)
ProximityPromptService.PromptButtonHoldEnded:Connect(onPromptHoldEnded)
Yêu cầu gần là một giải pháp tiện lợi và có thể tùy chỉnh cho sự tương tác vật lý trong trò chơi. Hãy xem các trang tham khảo ProximityPrompt và ProximityPromptService để điều khiển hành vi yêu cầu và khám phá cá