josh
josh

Reputation: 11

How do I iterate code over objects in a table in lua?

I am trying to write a code that does paralax scrolling. All the sprites in the "pieces" table need to shoot up into the air, then have their position reset to y=200 and x=randomnumber. Later on, I'm going to make them smaller or bigger depending on how fast they're moving for a true 3D effect.

Here's a naive attempt:

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

If i print "v" inside the ipairs i get the desired output (sprite, sprite1, sprite, etc), so I thought that what I have above would work. It doesn't. Any help?

Upvotes: 0

Views: 1275

Answers (1)

josh
josh

Reputation: 11

Here's the correct code which I figured out. If anyone sees this and needs it explaining, let me know.

local speed = math.random(250,1000)
--pieces = { "sprite1", "sprite2", "sprite3", "sprite4", "sprite5", "sprite6", "sprite7", "sprite8", "sprite9", "sprite10", "sprite11", "sprite12", "sprite13", "sprite14", "sprite15" } 
pieces = { "go1", "go2", "go3" } 

function update(self, dt)
    for i, v in ipairs(pieces) do
        p = go.get_position(v)
        p.y = p.y + speed * dt
        if p.y > 800  then
            p.y = math.random(200,800)/-1
            p.x = math.random(1,25) * math.random(10,35) * 2
            local speed = math.random(250,1000)
            go.set_position(p, v)
            else
            go.set_position(p, v)
        end 
    end
    end

Upvotes: 1

Related Questions