Random 如何从Lua中的表中随机选择对象?

Random 如何从Lua中的表中随机选择对象?,random,lua,coronasdk,lua-table,Random,Lua,Coronasdk,Lua Table,我试图添加一个函数,从表目标中随机选择对象。我在某个地方读到可以使用目标[math.randomtargets],但当我这样做时,它不仅会重置其中一个目标,而不管resetTarget调用如何,而且实际上不会使下一个目标随机 local targets -- an array of target objects local bomb = display.newImage("bomb.png") local asteroid = display.newImage("asteroid.png

我试图添加一个函数,从表目标中随机选择对象。我在某个地方读到可以使用目标[math.randomtargets],但当我这样做时,它不仅会重置其中一个目标,而不管resetTarget调用如何,而且实际上不会使下一个目标随机

local targets    -- an array of target objects

local bomb = display.newImage("bomb.png")
local asteroid = display.newImage("asteroid.png")
local balloon = display.newImage("balloon.png")

targets = { bomb, asteroid, balloon }

function createTarget()
    for i = 1, #targets do
        local t = targets[i]
        t.x = WIDTH + 50   -- start slightly off screen to the right
        t.y = math.random(100, HEIGHT - 100)   -- at random altitude
    end
end

function resetTarget(obj)
    createTarget()
end

function detectHits()
        -- Do hit detection for ball against each target
    local HIT_SLOP = BIRD_RADIUS * 2  -- Adjust this to adjust game difficulty
    for i = 1, #targets do
        local t = targets[i]
        if math.abs(t.x - bird.x) <= HIT_SLOP 
                and math.abs(t.y - bird.y) <= HIT_SLOP then
            -- Hit
            isBomb(t)
            isAsteroid(t)
            isBalloon(t)
            resetTarget(t)
            updateScore()
        end
    end
end

这将起作用,但您需要对currentTarget的正向引用

针对随机目标,您的功能是什么

local newTarget = function()
    local rand = math.random(1,#targets)
    currentTarget = target[rand]
    doSomething()
end

这将起作用,但您需要对currentTarget的正向引用

针对随机目标,您的功能是什么

local newTarget = function()
    local rand = math.random(1,#targets)
    currentTarget = target[rand]
    doSomething()
end

随机目标以detectHits为目标,detectHits依次调用ResetTarget,这需要调用createTarget,createTarget应该创建一个随机目标。另外,仅供参考,您的代码行currentTarget=targers[rand]应该是currentTarget=targets[rand]。此外,我相信编写lua函数的标准方法如下。。。函数newTarget…最好使用targets而不是table.maxntargets。在第一个nil值处停止,table.maxn不停止。@Jeremy虽然table.maxn在Lua 5.1中工作,这是Corona现在使用的版本,但它在Lua 5.2中被删除。随机目标以detectHits为目标,detectHits反过来调用ResetTarget,这需要调用createTarget,后者应该创建一个随机目标。另外,仅供参考,您的代码行currentTarget=targets[rand]应该是currentTarget=targets[rand]。此外,我相信编写lua函数的标准方法如下。。。函数newTarget…最好使用targets而不是table.maxntargets。在第一个nil值处停止,table.maxn不停止。@Jeremy虽然table.maxn在Lua 5.1中工作,这是Corona现在使用的版本,但它在Lua 5.2中被删除