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

触摸对象后删除并2秒恢复、增加金币功能实现及报错排查

问题分析与修复方案

报错原因

报错attempt to perform arithmetic (add) on string and number是因为你把oyuncuParasi定义成了字符串"Coins",却尝试对它执行加法运算(oyuncuParasi +1),字符串和数字无法直接进行算术操作。

另外原代码还有两个逻辑问题:

  1. 直接调用vurus.Parent:Destroy()会彻底删除对象,2秒后无法恢复,应该改用隐藏/禁用的方式替代销毁。
  2. 没有正确获取玩家的金币数据存储对象,"Coins"只是属性名称,需要先找到玩家对应的Leaderstats或数据存储实例。

修正后的代码

local WheatAmount = script.Parent
local isActive = true -- 替换原duvar变量,语义更清晰

function onTouch(hit)
    -- 验证触碰者是玩家角色
    local player = game.Players:GetPlayerFromCharacter(hit.Parent)
    if not player or not isActive then
        return
    end

    -- 获取玩家的金币数据(假设金币存在Leaderstats的Coins值中)
    local leaderstats = player:FindFirstChild("Leaderstats")
    local coins = leaderstats and leaderstats:FindFirstChild("Coins")
    if not coins then
        warn("玩家未找到Coins数据")
        return
    end

    -- 执行核心逻辑
    isActive = false
    coins.Value = coins.Value + 1 -- 正确给金币加1
    WheatAmount.Transparency = 1 -- 隐藏对象
    WheatAmount.CanCollide = false
    wait(2)
    WheatAmount.Transparency = 0 -- 恢复显示
    WheatAmount.CanCollide = true
    isActive = true
end

script.Parent.Touched:Connect(onTouch) -- 注意Roblox现在推荐用Connect而非connect

关键修改点

  • 替换oyuncuParasi的错误定义:通过GetPlayerFromCharacter获取触碰的玩家,再找到其Leaderstats下的Coins数值对象,操作Value属性完成加法。
  • 取消Destroy()操作:改用修改Transparency(透明度)和CanCollide属性来实现对象的隐藏/恢复,避免对象被彻底删除无法复原。
  • 变量语义优化:把duvar改成isActive,更符合逻辑含义。
  • 增加合法性校验:先判断触碰者是否为玩家,再检查金币数据是否存在,避免空引用错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:35:16