坐标在love.graphics.polygon

时间:2018-05-23 21:09:23

标签: lua love2d

我不知道这里的坐标示例中哪些数字做了什么。我想他们的意思是把左上角放在这个位置,右下角放在这个位置,但我不知道哪个数字对应于哪个位置。

enter link description here

我一直试图用数字来愚弄这个数字以获得一个小的绿色矩形,但仍然得到如下的奇怪结果,并且不知道哪些数字需要成为制作矩形的顺序对称的,在底部

enter image description here

这是矩形的样子

enter image description here

矩形的高度为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

1 个答案:

答案 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时要尝试做什么。