ProximityPrompt 对象鼓励用户交互以触发在体验对象上靠近的对象,例如门、灯光开关和按钮。使用此对象,您可以:
- 指示用户在体验中可以与哪些对象互动。
- 显示用户在对象上可以采取的行动,然后通过用户输入(例如按住或按住钥键)触发该行动。
- 显示所有输入类型的正确输入,例如键盘、游戏手柄和触摸屏幕键。
创建接近提示
您必须将亲密提示对应到您想要用户与之交互的部件、模型或附件。要将亲密提示添加到 BasePart 、 Model 或 Attachment 对象:
从菜单中,插入一个 ProximityPrompt 。
自定义接近提示
您可以根据您想要的显示方式,自定义您想要的提示,当您想要它是可见,并且您想要用户做的2>触发2>。
外观
接近提示需要传达三个信息:
- 用户可以与 对象 互动。
- 当接近提示与其交互时触发的 行动 。
- 用户必须按或按住的 键 。
您可以通过以下属性指定这些:
ObjectText 用户可以与对象交互的可选名称。
ActionText 用户触发的操作的可选名称。
KeyboardKeyCode 键盘按钮是用户必须按或按住才能触发操动作。
GamepadKeyCode 游戏手柄键是玩家必须按或按住才能触发操动作。
可见度
您可以通过其 MaxActivationDistance , RequiresLineOfSight 和 Exclusivity 属性控制接近提示的可见性。
最大激活距离
Class.ProximityPrompt.MaxActivationDistance|MaxActivationDistance 属性允许您定义从ProximityPrompt对象周围的范围。 一旦用户的角色进入该范围,proximity提示 就会显示。
需要视线
Class.ProximityPrompt.RequiresLineOfSight|RequiresLineOfSight 属性启用了从 相机 到ProximityPrompt对象之间的清晰路径时的靠近提示的可见度。默认情况下,该属性设置为“真”。
专属性
如果用户的角色位于多个邻近提示的范围内,每个邻近提示的可见度都取决于相机指向的邻近提示以及每个邻近提示的 Exclusivity 属性值。
交互
您可以通过其 HoldDuration 和 ClickablePrompt 属性来自定义用户与靠近提示通过的方式。
持续时间
Class.ProximityPrompt.HoldDuration|HoldDuration 属性决定用户在靠近提示的提示触发前需要按几秒的时间。如果该属性的值为 0,靠近提示的提示触发即可立即完成。
可点击提示
Class.ProximityPrompt.ClickablePrompt|ClickablePrompt 属性指定用户是否可以单击邻近提示来触发其操动作。当设置为 是 时,用户可以通过直接单击邻近提示 或 通过按指定键来与邻近提示交互。当设置为
脚本提示
您可以通过 ProximityPrompt 对接近提示事件,或通过 ProximityPromptService 对象本身或全球通过。 ProximityPromptService 允许您从任意地点管理所有接近提示行为,并且防止在您的体验中重复代码。
事件 | 描述 |
---|---|
PromptTriggered | 在玩家与接近提示互动时触发(在零HoldDuration后)。 |
PromptTriggerEnded | 触发当玩家停止与接近提示互动时。 |
PromptButtonHoldBegan | 在玩家开始与一个靠近提示使用非零 HoldDuration 值的接近提示开始交互时触发。 |
PromptButtonHoldEnded | 在玩家停止与一个非零HoldDuration值的靠近提示互动时触发。 |
PromptShown | 触发在 LocalScripts 靠近提示时显示。 |
PromptHidden | 在 LocalScripts 中触发时,当提示隐藏时。 |
下面的代码示例包括使用 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)