love2d 无法使用绘图功能移动矩形

love2d can't move rectangle using draw function

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:'draw' 的参数 #1 错误(应为可绘制对象,结果为零)

虽然是@Quiloos39自己想出来的,供以后参考:

这是因为 love.graphics.rectangle 没有 return 任何东西 - 它只是在指定坐标处绘制一个矩形。 love.graphics.draw 需要一个 Drawable 作为它的第一个参数。 Drawable 比矩形稍微复杂一些:它们可以使用 love.graphics.newSomething 创建,其中 Something 可以是以下任何一种:

有关 Drawable 的详细信息,请参阅 Drawable in the love2d wiki


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

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

没有必要在 love.load 中调用 love.graphics.rectangle ,因为它既不会绘制也不会 return 任何东西。但是,一旦您打算为播放器使用图像,明智的做法是在 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