Lua LOVE2D使用bump无法添加多个子弹到世界中

我正在学习LOVE2D并制作平台游戏,但在尝试使用bump库时遇到了一个问题。当我只射击一次时,我有一个可以射出子弹并将其成功添加到世界中的玩家,但当我再次射击时,LOVE会给我这个错误:

Error

libs/bump/bump.lua:619: Item table: 0x121b5a18 added to the world twice.

Traceback

[C:]: in function 'error'
libs/bump/bump.lua:619: in function 'add'
main.lua:39: in function 'update'
main.lua:118: in function 'update'
[C:] in function 'xpcall'

我的添加子弹到世界的过程是实例化子弹,将它们添加到一个名为子弹的表中,然后循环遍历该表并将每个子弹添加到世界中。我知道问题在于它不允许我将相同的项添加到世界中,所以我的问题是如何在不让bump认为它们是相同的情况下将多个子弹添加到世界中?

这是我用于更新子弹的代码:

function UpdateBullet(dt)
    shootTimer = shootTimer - 1 * dt
    if shootTimer <= 0 then
        player.canShoot = true
    end

    if love.keyboard.isDown("z") and player.canShoot then
        -- 实例化它并将其放在玩家旁边并稍微向上一点
        newBullet = {x=player.x + player.width, y = player.y + 5}
        table.insert(bullets, newBullet)
        -- 宽度和高度目前是硬编码的
        for i, bullet in ipairs(bullets) do
            world:add(bullet, bullet.x, bullet.y, 10, 10)
        end
        player.canShoot = false
        shootTimer = player.shootDelay
    end

    for i, bullet in ipairs(bullets) do
        -- 子弹速度和屏幕尺寸也暂时是硬编码的,糟糕
        bullet.x = bullet.x + 250 * dt
        -- 如果子弹离开屏幕,就将它删除
        if bullet.x > 600 then
            table.remove(bullets, i)
        end
    end
end

感谢您的帮助。提前致谢。

点赞
用户2858170
用户2858170
下面的代码块从一个全局列表中添加子弹。假设这个列表里有10颗子弹,你现在要添加1颗新的。接着,你将这11颗子弹添加进了世界中。但是,在上一次函数运行时已经把这11颗子弹中的10颗添加到世界中了。
 
其中,
 
for i, bullet in ipairs(bullets) do
        world:add(bullet, bullet.x, bullet.y, 10, 10)
end
2019-11-22 20:07:44