靠近提示

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

您可以创建在用户靠近对象时显示的互动感应提示,然后触发用户输入的行动。

本教程使用 地下城探索 项目作为展示。要继续前进,请在进行之前在 Studio 中打开它。

Edit in Studio option from the experience's main page

创建提示

屏幕上的提示由一个 ProximityPrompt 对象生成,该对象被父辈到 Attachment , BasePartModel

  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当用户与提示交互时(非零提示的持续时间),发生火焰(HoldDuration)。
PromptButtonHoldBegan当用户开始与非零 HoldDuration 提示互动时,发生火焰。
PromptButtonHoldEnded当用户停止与非零提示交互时发生火焰HoldDuration

地下城挖掘 项目中,这些事件由 PromptEvents 脚本在 服务器脚本服务 内管理。

在脚本内,上面的事件简单地调用 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 参考页面,获得更多方法来控制提示行为,并在 地牢深渊 中探索其他互动对象以获得创造灵感。