我想写一个代码,做paralax滚动。 “棋子”表中的所有精灵都需要拍摄到空中,然后将其位置重置为y = 200和x =随机数。稍后,我将根据他们为了获得真正的3D效果而移动的速度,让他们变得更小或更大。如何在lua中的表中对对象进行迭代代码?
这里有一个天真的尝试:
local speed = math.random(250,1000)
pieces = { "sprite", "sprite1", "sprite2", "sprite3", "sprite4",
"sprite5", "sprite6", "sprite7", "sprite8", "sprite9", "sprite10",
"sprite11", "sprite12", "sprite13", "sprite14", "sprite15" }
function update(self, dt)
for i, v in ipairs(pieces) do
p = go.get_position(v)
p.y = p.y + speed * dt
print(v)
if p.y > 800 then
p.y = -200
p.x = math.random(1,25) * math.random(10,35)*2
local speed = math.random(250,1000)
end
go.set_position(v)
end
end
如果我打印ipairs我得到所需的输出(雪碧,sprite1,雪碧等)内的“V”型,所以我想我有什么上面会工作。它没有。任何帮助?
那么,你想循环它 - 它循环好,打印v显示它。你必须解释你想要什么和你得到什么。 “不起作用”不是一种解释。如果它不改变“速度” - 这是因为你在'if p.y> 800'分支中声明了局部变量'速度',所以新的随机值不在分支之外使用。如果它不能以其他方式工作,你必须解释。 – Vlad
你说得对。我忘了说具体问题是 p = go.get_position(v) 给出了一条错误消息。我相信我没有正确引用该对象。 – josh
那是'去'什么?我认为这是一个game_objects的集合,由你在'pieces'数组中的名字索引。但是,它在你的样本中?它有函数get_position()/ set_position()吗?那些如何定义? – Vlad