You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Proximity Prompt添加再次按压的冷却机制?

给Proximity Prompt添加冷却功能的实现方法

核心思路

通过状态变量标记是否处于冷却期,在Prompt触发时先检查状态:未冷却则执行功能并启动冷却计时器,时间到后解除冷却。

基础实现代码(Lua,Roblox环境)

-- 目标Proximity Prompt对象,根据实际路径调整
local proximityPrompt = script.Parent.ProximityPrompt

-- 设置冷却时长(单位:秒)
local cooldownDuration = 5
-- 冷却状态标记
local isCooldownActive = false

-- 绑定Prompt触发事件
proximityPrompt.Triggered:Connect(function(triggerPlayer)
    -- 冷却中直接终止逻辑
    if isCooldownActive then return end

    -- 编写Prompt触发后要执行的核心功能
    print(triggerPlayer.Name .. "触发了交互")

    -- 启动冷却流程
    isCooldownActive = true
    task.wait(cooldownDuration)
    -- 冷却结束,重置状态
    isCooldownActive = false
end)

优化:显示冷却倒计时提示

如果要让玩家直观看到剩余冷却时间,可动态修改Prompt的提示文本:

local proximityPrompt = script.Parent.ProximityPrompt
local cooldownDuration = 5
local isCooldownActive = false

proximityPrompt.Triggered:Connect(function(triggerPlayer)
    if isCooldownActive then return end

    print(triggerPlayer.Name .. "触发了交互")

    isCooldownActive = true
    -- 保存原始交互文本
    local originalActionText = proximityPrompt.ActionText

    -- 倒计时更新提示文本
    for remainingTime = cooldownDuration, 1, -1 do
        proximityPrompt.ActionText = string.format("冷却中 (%ds)", remainingTime)
        task.wait(1)
    end

    -- 冷却结束,恢复原始文本并重置状态
    proximityPrompt.ActionText = originalActionText
    isCooldownActive = false
end)

注意事项

  • 脚本放置位置:涉及服务器逻辑(如物品发放、状态修改)时,建议将脚本放在ServerScriptService或绑定到零件的Script中;仅客户端交互提示可使用LocalScript。
  • 防作弊:核心功能逻辑尽量放在服务器端执行,避免客户端脚本被篡改绕过冷却限制。

内容的提问来源于stack exchange,提问作者Romal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:45:49