靠近提示

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

您可以創建在使用者接近 3D 空間物件時出現的互動感應提示,然後根據使用者輸入啟動行動。

本教學使用 地牢探索 項目作為展示。若要跟隨,請在繼續前先在 Studio 中打開它。

Edit in Studio option from the experience's main page

創建提示

在畫面上的提示由一個 ProximityPrompt 對象生成,該對象與 AttachmentBasePartModel 相關。

  1. 在 3D 視圖中或從探索器中選擇 監獄門 模型 ( 工作區快捷方塊監獄門 ).

  2. 擴展其樹狀結構並選擇 對物件。

  3. Attachment 上放置提示可讓您更好地控制互動點發生的位置,而不是直接放置在零件/模型上。插入新的 附件 ,並將其重命名為 提示附件

  4. 找到新附件的 位置 屬性,並將其設為 -2.25-0.5 、- 0.5 。這將把它移到門鑰孔前面。

  5. 將鼠標懸停在 提示附件 上,然後插入新的 靠近提示 對物件。

提示出外觀

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

  • 對象文字 — 與對象互動的可選名稱。
  • 行動文字 — 可選擇的行動名稱,顯示給使用者。
  • 鍵盤鍵碼 — 會觸發提示的鍵盤鍵。
  • 遊戲控制器按鍵代碼 — 會觸發提示的遊戲控制器按鍵。

要自訂監獄門提示的外觀,請作出以下變更:

  1. 在「屬性」視窗中,尋找 對象文字 屬性,並輸入

  2. 對於 行動文字 屬性,輸入 鎖定選擇

激活距離

當使用者的 角色 在提示對物件的父元素範圍內移動時,會出現提示。範圍包括定義的 最大激活距離 範圍。

預設值在大多數情況下運作良好,但您可以將 最大激活距離 變更為 4 ,將使用者互動更接近鎖定。

保持時間

保持時間 屬性值決定提示的行動在秒內是否會很快被觸發。因為必須選擇此門以解鎖它,將 保持時間 屬性變更為 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當使用者與提示互動時發生火災(後非零》提示的持續時間)。
PromptButtonHoldBegan當使用者開始與非零 HoldDuration 提示互動時,發生火災。
PromptButtonHoldEnded當使用者停止與非零 HoldDuration 提示互動時發生火災

地牢探索 項目中,這些事件由 PromptEvents 腳本在 服務器腳本服務 內管理。

在腳指令碼內,上面的事件簡單地呼叫 對象行動 ModuleScript 內的函數,也位於 服務器腳本服務 中。


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 參考頁面,獲得更多方法來控制提示行為,並在 地牢探索 中探索其他互動對象以獲得創意靈感。