立即開始
中級教學

接近提示

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

您可以創建互動式接近提示,當用戶接近3D空間中的物體時出現,然後在用戶輸入時觸發行動。

本教程使用 Dungeon Delve 專案作為展示。要跟隨教學,請在繼續之前在Studio中打開它。

從體驗的主頁面中編輯選項

創建提示

屏幕提示由一個 ProximityPrompt 物件生成,此物件父項為 AttachmentBasePartModel

  1. 在3D視圖或從 Explorer 中選擇 PrisonDoor 模型(WorkspacePromptObjectsPrisonDoor)。

  2. 展開其樹並選擇 Door 物件。

  3. 將提示放置在 Attachment 上可以更好地控制互動點的位置,而不是直接放置在部件/模型上。插入一個新的 Attachment 並將其重命名為 PromptAttachment

  4. 尋找新附加項的 Position 屬性並將其設置為 -2.25-0.5-0.5。這將使其移動到門的鎖孔前面。

  5. 將鼠標懸停在 PromptAttachment 上並插入一個新的 ProximityPrompt 物件。

提示外觀

提示由三個主要元素組成,每個元素都可以通過以下屬性進行控制:

  • ObjectText — 對正在互動的物體的可選名稱。
  • ActionText — 顯示給用戶的可選行動名稱。
  • KeyboardKeyCode — 將觸發提示的鍵盤鍵。
  • GamepadKeyCode — 將觸發提示的遊戲手柄按鈕。

要自定義監獄門提示的外觀,請進行以下更改:

  1. Properties 窗格中,找到 ObjectText 屬性並輸入 Door

  2. 對於 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 中。

在腳本內,上述事件簡單地調用 ObjectActions 的函數 ModuleScript,該模塊也位於 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)

接近提示是一種方便且可自定義的解決方案,用於遊戲內物體互動。查看 ProximityPromptProximityPromptService 的參考頁面,了解更多控制提示行為的方法,並在 Dungeon Delve 中探索其他互動物體以獲取創意靈感。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。