love.graphics.polygon 中的坐标是什么意思

我不知道这个坐标示例中的数字是什么意思。 我想象它们的意思是将左上角放在这个位置,将右下角放在这个位置,但我不知道哪个数字对应哪个位置。

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) -- 将绘图颜色设置为绿色的地面
  love.graphics.polygon("fill", objects.ground.body:getWorldPoints(objects.ground.shape:getPoints())) -- 使用地面的坐标绘制一个“填充”的多边形
    --  这是地面的坐标。      -11650  950 13350   950 13350   1000    -11650  1000

  love.graphics.setColor(0.76, 0.18, 0.05) --将绘图颜色设置为红色的球
  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) --将绘图颜色设置为灰色的块
  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
点赞
用户841581
用户841581

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做什么。

2018-05-24 01:38:38