修复我的 roblox 拼图游戏的颜色触摸脚本

我有一款基于街机经典游戏 Q bert 的 roblox 拼图游戏,目标是改变所有砖块的颜色,同时避免敌人并获得高分,但我将添加一些自己的功能,以使其不会像以前那样重复,例如通过在平台上收集钥匙以解锁通往下一关的门等其他任务和像钻石这样的秘密物品,每 10 轮出现一次,收集一个可以让玩家获得一个额外的小人和 1 千万分。

目前游戏的情况如下 https://streamable.com/na46cu 问题是,颜色实际上确实会变化,但当我再次跳到这个砖块时它会改回它最初的颜色,而这种情况下最初的颜色是绿色,但是我希望它能保持在第一种颜色上,并且只有当玩家再次跳上砖块时才会变化,在游戏后期,我希望像这个例子[https://www.youtube.com/watch?v=9eXJWiNXpOo\]\[2\] 一样变得更加复杂和像拼图一样。

我尝试了一些方法,例如添加计时器,debounce 甚至完全分开脚本,但都没有效果,我当然也去寻找其他有类似问题的人的问题,但到目前为止我一直在努力寻找有相同问题的人。

  local module = {} --module for the modulescript and for loop is created
local CollectionService = game:GetService("CollectionService")
for _, part,brick in pairs (CollectionService:GetTagged("blocks"))
do

    part.Touched:Connect(function(hit) --Part connects with the touched property to the function with the parameter hit


        if (hit.Parent:FindFirstChild("Humanoid"))
        then

            part.BrickColor = BrickColor.new ("Bright green")

            wait (2)
            part.BrickColor = BrickColor.new ("Eggplant")

        --  local sound = workspace.Sound -- use "local sound = workspace.Sound", if there is already a sound object in the workspace
            --sound.SoundId = "rbxassetid://4797903038" --replace quoted text with whatever sound id you need to use



                --sound:Play()




            end

            end)

end

--      end)
--end



return module

我不是最好的程序员,但我知道编程的基础知识,并尝试过各种编程语言,例如 Python 和 c++,这些编程语言一旦掌握了基础,就不是那么难理解的,但解决问题和调试错误确实是非常棘手的。

我知道我可以尝试一个简单的 debounce 系统,但这仍然不能解决问题,而且它只会让代码运行一次并减慢它的速度。

我一直在各处寻找解决此问题的解决方案,但从未得到过答案,因此我一次性尝试 stackoverflow,看看能否在这里得到我需要的帮助。

点赞
用户15820485
用户15820485
local module = {} --创建模块的模块脚本和循环所需的模块
local CollectionService = game:GetService("CollectionService")
local DidParts = {} --初始化另一个表格以检查部件是否已在其中
for _, part,brick in pairs(CollectionService:GetTagged("blocks")) do
    part.Touched:Connect(function(hit) --将 part 与 Touched 属性连接到具有 hit 参数的函数

        if hit.Parent:FindFirstChild("Humanoid") then
            if table.find(DidParts,part) then
                return --检查部件是否不在表格中,如果在则返回
            end

            part.BrickColor = BrickColor.new("Bright green")

            wait(2)
            part.BrickColor = BrickColor.new("Eggplant")
            table.insert(DidParts,part) --完成所有代码后插入表格中
            -- local sound = workspace.Sound -- 如果工作区域中已经有一个声音对象,则使用“local sound = workspace.Sound”
            -- sound.SoundId = "rbxassetid://4797903038" -- 将引用文本替换为所需使用的任何声音 id
            -- sound:Play()

        end

    end)

end

--      end)
--end

return module
2021-06-02 12:21:48