我不知道这里的坐标示例中哪些数字做了什么。我想他们的意思是把左上角放在这个位置,右下角放在这个位置,但我不知道哪个数字对应于哪个位置。
我一直试图用数字来愚弄这个数字以获得一个小的绿色矩形,但仍然得到如下的奇怪结果,并且不知道哪些数字需要成为制作矩形的顺序对称的,在底部
这是矩形的样子
矩形的高度为50,屏幕高度为1000,屏幕宽度为1700。
这是我的绘制功能
function love.draw()
love.graphics.setColor(0.28, 0.63, 0.05) -- set the drawing color to green for the ground
love.graphics.polygon("fill", objects.ground.body:getWorldPoints(objects.ground.shape:getPoints())) -- draw a "filled in" polygon using the ground's coordinates
-- These are the grounds coordinates. -11650 950 13350 950 13350 1000 -11650 1000
love.graphics.setColor(0.76, 0.18, 0.05) --set the drawing color to red for the ball
love.graphics.circle("fill", objects.ball.body:getX(), objects.ball.body:getY(), objects.ball.shape:getRadius())
love.graphics.setColor(0.20, 0.20, 0.20) -- set the drawing color to grey for the blocks
love.graphics.polygon("fill", objects.block1.body:getWorldPoints(objects.block1.shape:getPoints()))
love.graphics.polygon("fill", objects.block2.body:getWorldPoints(objects.block2.shape:getPoints()))
print(objects.block1.body:getWorldPoints(objects.block1.shape:getPoints()))
end
答案 0 :(得分:1)
如https://love2d.org/wiki/love.graphics所述,Löve的坐标系在屏幕的左上角有(0,0)。 X值向右增加,Y值增加。
polygon
函数需要绘图模式作为第一个参数,其余(变量)参数是您想要绘制的多边形顶点的坐标。由于你想绘制一个矩形,你需要四个顶点/八个数字。您不必首先列出矩形的左上角,但这可能是最简单的事情。
所以在你的情况下,你需要像:
love.graphics.polygon('fill', 0, 950, 0, 1000, 1700, 1000, 1700, 950)
我没有使用物理系统,所以我不太确定它的坐标系与“屏幕”坐标有什么关系。您在代码清单中的注释中显示的值似乎应该给出一个矩形(尽管x = -11650
不在屏幕上)。您可以先尝试不使用物理系统进行实验。
此外,由于Löve中的物理系统只是对Box2D的绑定,您可能需要阅读其文档(http://box2d.org/about/)。不确定将shape:getPoints
投放到body:getWorldPoints
时要尝试做什么。