我想寫一個代碼,做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