添加近接提示

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

您可以創建使用者靠近 3D 空間中的物件時出現的互動提示,然後在使用者輸入時啟動動作。

此教學使用 地城深度 項目作為展示。若要跟隨,請在 Studio 中開啟它,然後繼續。

Edit in Studio option from the experience's main page

建立提示

畫面提示是由 ProximityPrompt 對象,與 AttachmentBasePart 或 2>Class.Model2> 對象屬性,生成。

  1. 選擇 PrisonDoor 模型在 3D 視圖或從 Explorer ( WorkspacePromptObjects → 1> PrisonDoor1> )。

  2. 擴展其樹,然後選擇 對物件。

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

  4. 找到新附件的 位置 屬性,並將其設為 -2.25-0.5 、 1>-1>0.51> 。這會將它移動到門的鑰匙孔前。

  5. 將鼠標指针擺動到 提示附件 上,並且插入新的 鄰近提示器プロンプト項目 對物件。

提示外觀

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

  • 物件文字列 — 可選的名稱,與對話框互動的物件。
  • ActionText — 可選的動作名稱顯示給用戶。
  • KeyboardKeyCode — 會啟動提示的鍵盤按鍵。
  • 遊戲控制器鍵碼 — 遊戲控制器按鈕,會觸發提示。

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

  1. 在屬性窗口中,找到 對象文字 屬性,然後輸入

  2. 對於 ActionText 屬性,輸入 Pick Lock

啟動距離

提示出現在使用者的 角色 移動在指定 MaxActivationDistance 範圍內時。

預設值在大多數情況下都很好運作,但您可以通過將 最大啟動距離 變更為 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發射時間發生在使用者與提示互動時 (持續時間為零的提示) HoldDuration
PromptButtonHoldBegan發射時間發生在使用者與非零HoldDuration提示互動開始時。
PromptButtonHoldEnded發生在使用者停止與非零提示互動時 HoldDuration

地城深淵 項目中,這些事件由 PromptEvents 指令碼在 ServerScriptService 中管理。

內部的脚指令碼,上方的事件只是在 對象操作 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參考頁面以獲得更多控制提示行為的方法,並探索地城浸中的其他互動對象以獲得創意。