love2d不能使用绘制函数移动矩形。

function love.load()
    Player = {
            x = 1,
            y = 1,
            w = 50,
            h = 50
    }
    
    Player.self = love.graphics.rectangle("fill", Player.x, Player.y, Player.w, Player.h)
end

function love.draw()
    love.graphics.draw(Player.self, Player.x, Player.y) --15 line
end

我在这里遇到一些问题,希望有人能帮我。我不久前开始使用love2d,所以我正在尝试弄清楚问题。

main.lua:15: bad argument #1 to 'draw' (Drawable expected, got nil)

点赞
用户570336
用户570336

虽然 @Quiloos39 已经自己解决了,但是为了以后的参考:

这是因为 love.graphics.rectangle 不会返回任何东西,它只是在指定的坐标处绘制矩形。love.graphics.draw 要求它的第一个参数是一个 DrawableDrawable 比矩形略微复杂:它们可以使用 love.graphics.newSomething 来创建,其中 Something 可以是以下任意一项:

有关 Drawable 的更多信息,请参见 love2d wiki 中的 Drawable


为了在玩家当前位置绘制一个矩形,请使用:

function love.draw()
    love.graphics.rectangle("fill", Player.x, Player.y, Player.w, Player.h)
end

没有必要在 love.load 中调用 love.graphics.rectangle,因为它既不会绘制也不会返回任何东西。但是,一旦您计划为玩家使用一个图像,最好在 love.load 中预先加载图像并在 love.draw 中使用它,如下所示:

function love.load()
    Player = {
        x = 1,
        y = 1,
        w = 50,
        h = 50,
        image = love.graphics.newImage("img/player.png")
    }
end

function love.draw()
    love.graphics.draw(Player.image, Player.x, Player.y)
end
2016-01-13 06:02:07