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
可以是以下任何一种:
- Canvas
- Framebuffer(在 0.8.0 中删除)
- Image
- Mesh
- ParticleSystem
- SpriteBatch
- Text
- Video
有关 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
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
可以是以下任何一种:
- Canvas
- Framebuffer(在 0.8.0 中删除)
- Image
- Mesh
- ParticleSystem
- SpriteBatch
- Text
- Video
有关 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