如何在集合中循环结果?

在我的Tabletop Simulator模组中,我有一个袋子,当将东西放入袋子中时,将调用emptyContents()函数。例如,我可以在袋子里放入15个骰子。

emptyContents()函数中,我遍历袋子中的对象。但是,如您所见,我必须放入多个if语句来捕捉放入的骰子数量,因为我希望骰子生成在不同的位置。

contents变量是袋子里的骰子数量。

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
      if i <= 6 then
        self.takeObject(setPosition(5, -3))
      elseif i <= 12 then
        self.takeObject(setPosition(12.4,-5))
      elseif i <= 18 then
        self.takeObject(setPosition(19.8,-7))
      end
    end
end

如何使函数更少的静态?因为现在我需要为每组6个骰子编写if语句。

点赞
用户7556173
用户7556173

也许你可以添加这样一个配置:

local t = {
    {6, 5, -3},
    {12, 12.4, -5},
    {18, 19.8, -7},
}

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
        for _, v in ipairs(t) do
            local l, p1, p2 = unpack(v)
            if i <= l then
                self.takeObject(setPosition(p1, p2))
                break
            end
        end
    end
end
2020-04-08 12:05:44