Что означают координаты в love.graphics.polygon - PullRequest
0 голосов
/ 24 мая 2018

Я не знаю, какие числа делают то, что в примере с координатами здесь.Я предполагаю, что они имеют в виду такие вещи, как размещение верхнего левого угла в этой позиции и нижнего правого угла в этой позиции, но я не знаю, какое число соответствует какой позиции.

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 голосов
/ 24 мая 2018

Как описано в https://love2d.org/wiki/love.graphics, Система координат Лёве имеет (0, 0) в верхнем левом углу экрана.Значения X увеличиваются вправо, значения Y увеличиваются вниз.

Функция polygon ожидает режим рисования в качестве первого параметра, а оставшиеся (переменные) параметры являются координатами вершин многоугольника, который вы используете.хочу рисовать.Так как вы хотите нарисовать прямоугольник, вам нужно четыре вершины / восемь чисел.Вам не нужно сначала перечислять верхний левый угол прямоугольника, но это, вероятно, самое простое.

Итак, в вашем случае вам нужно что-то вроде:

love.graphics.polygon('fill', 0, 950, 0, 1000, 1700, 1000, 1700, 950)

IЯ не работал с системой физики, поэтому я не совсем уверен, как ее система координат связана с «экранными» координатами.Значения, которые вы показываете в комментарии в листинге кода, похоже, что они должны давать прямоугольник (хотя x = -11650 не будет на экране).Вы можете сначала попробовать экспериментировать без физической системы.

Кроме того, поскольку физическая система в Лёве является просто привязкой к Box2D, вы можете прочитать ее документацию (http://box2d.org/about/). Не совсем уверен, что выпытаюсь сделать с кормлением shape:getPoints в body:getWorldPoints.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...