所有这些发射物都朝着一个方向走

各位,我在不同的Lua代码位置有这些代码片段(不想在这里发布所有代码)。我想在love2d上制作一个游戏。我的问题是:我的发射物总是走向一个方向。我甚至尝试了projectile.animnumber,但它仍然朝着一个方向走。有没有办法将这个巨大的问题拆分开来呢?(我是个新手,不要太严厉对待我)

projectile = {}
   projectile.width = 30
   projectile.height = 32
   projectile.animNumber = 1

function love.keyreleased(key)
        if (key == "space") then
            shoot()
            love.audio.play(magic_shotSND)

            if player.animNumber == 1 then
                projectile.animNumber = 1

            elseif player.animNumber == 2 then
                projectile.animNumber = 2

            elseif player.animNumber == 3 then
                projectile.animNumber = 3

            else
                projectile.animNumber = 4
            end

        end
    end

    -----

    for i,v in ipairs(player.shots) do
            if projectile.animNumber == 1 then
                v.x = v.x + 300 * dt

            elseif projectile.animNumber == 2 then
                v.x = v.x - 300 * dt

            elseif projectile.animNumber == 3 then
                v.y = v.y + 300 * dt

            else
                v.y = v.y - 300 * dt

            end
        end

    ----

    function shoot()
        local shot = {}
        shot.x = player.x - 16
        shot.y = player.y - 8
        table.insert(player.shots, shot)
    end

    for i,v in ipairs(player.shots) do
            love.graphics.draw(skull, v.x, v.y)
        end
点赞
用户6582358
用户6582358

将你所有的 "projectile.animNumber" 替换为 "v.animNumber"

我认为问题出在这里:

for i,v in ipairs(player.shots) do
    if v.animNumber == 1 then
        v.x = v.x + 300 * dt

    elseif v.animNumber == 2 then
        v.x = v.x - 300 * dt

    elseif v.animNumber == 3 then
        v.y = v.y + 300 * dt

    else
        v.y = v.y - 300 * dt

    end
end

在你的循环中,你检查了 projectile.animNumber,但这在你的代码中之前没有出现过。因此,其它子弹的方向被设定成了相同的方向。

如果我的解释有困难,我很抱歉。

2016-07-13 03:36:36