Lua LOVE2D不能使用凹凸向世界添加多个子弹

问题描述 投票:0回答:1

我只是进入LOVE2D并制作了平台游戏,但是在尝试使用凹凸库时遇到了麻烦。我有一个可以射击子弹并将其添加到世界上的球员,当我只射击一次时,但是当我再次射击时,爱给了我这个错误:

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'

我向世界添加子弹的过程是实例化子弹,将其添加到名为bullets的表中,然后遍历该表将每个子弹添加到世界。我知道问题在于它不会让我将同一项目添加到世界上,所以我的问题是如何在不加分地认为它们相同的情况下将多个项目符号添加到世界上?

这是我的更新项目符号的代码:

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

    if love.keyboard.isDown("z") and player.canShoot then
        -- instantiate it next to player and a bit up 
        newBullet = {x=player.x + player.width, y = player.y + 5}
        table.insert(bullets, newBullet)
        -- Width and height hardcoded for now
        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 speed and screen size also hardcoded rn, oops
        bullet.x = bullet.x + 250 * dt
        -- if bullet goes off screen, remove it
        if bullet.x > 600 then
            table.remove(bullets, i)
        end
    end
end

非常感谢您的帮助。在此先感谢

lua love2d
1个回答
1
投票
    for i, bullet in ipairs(bullets) do
        world:add(bullet, bullet.x, bullet.y, 10, 10)
    end

您的代码的这一部分从全局列表中添加项目符号。假设您在该列表中有10条子弹。您添加1个新项目符号。然后将这11颗子弹添加到世界上。但是您已经在上一次函数运行中向世界添加了这11个项目符号中的10个。

© www.soinside.com 2019 - 2024. All rights reserved.