所有这些射弹都朝着一个方向前进

时间:2016-07-12 20:05:09

标签: animation lua directions love2d projectile

伙计们如此基本我在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

1 个答案:

答案 0 :(得分:0)

将所有“projectile.animNumber”替换为“v.animNumber”

我认为问题是:

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

在你的for循环中,你正在检查projectile.animNumber,它不会出现在你的代码中。因此,使else语句成立并使所有射弹在一个方向上行进。

抱歉,如果它令人困惑;我不善于解释事情