Lua循环创建多个隔开的物品

问题描述

我是Lua的新手。我正在尝试在Lua中创建一个插件,该插件将创建多个间隔开的块。目前,我似乎无法获得表函数来更新块的新位置。

一个坐标系,可以在这里找到文档 https://github.com/daniel-flassig/pytha-lua-api/wiki/pytha.create_block

用户界面允许用户输入所需的重复块数。

for x_panels = 1,data.x_panels do
       
       local position =  {data.origin[1],data.origin[2],data.origin[3]}
       

       local new_stock = pytha.create_block(data.width,data.height,data.thickness,{data.position}) 
             pytha.set_element_name(new_stock,"Stock")
             table.insert(data.cur_elements,new_stock)
             data.x_panels = -1
             table.insert(position,{data.origin[1] + data.width,data.origin[3]})
        
   end  

提前谢谢!

解决方法

根据代码的外观,您正在使用table.insert()来尝试更新下一个块的位置。该方法正在将您的新期望职位插入到您已经存在的职位表中,从而导致:

position = {
  data.origin[1],data.origin[2],data.origin[3],{ data.origin[1] + data.width,data.origin[3] }
}

另外,在您的create块中似乎没有使用位置变量,并且从您发布的API的外观来看,data.position不可用。

我的建议是,在循环外创建原始位置表,并在循环内通过将表中的值直接设置为下一次迭代所需的新位置来对其进行更新:

-- assuming format of data.origin = { 0,0 }
local position = data.origin

for i = 1,data.x_panels do
  pytha.create_block(data.width,data.height,data.thickness,position) 
  pytha.set_element_name(new_stock,"Stock")
  table.insert(data.cur_elements,new_stock)
  position[1] = position[1] + data.width
end 

您还可以使用while循环,因为实际上没有使用i,但这取决于您!