прямоугольник контура тела love2d - PullRequest
0 голосов
/ 05 декабря 2018

Так что я вопрос.Как я могу нарисовать эти прямоугольники с промежутком в середине,

enter image description here

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

Я пытался использовать многоугольник, но когда я даю вершины:

points = {4, 4, 80, 4, 80, 80, 4, 80, 4, 4, 6, 6, 78, 6, 78, 78, 6, 78, 6, 6}
love.graphics.polygon("fill", points)

Это делает квадрат заполненным внутри, но я хочуразрыв, и я хочу, чтобы сталкивающаяся коробка покрывала только красную сторону.Как бы я пошел по этому поводу?

1 Ответ

0 голосов
/ 09 декабря 2018

Что я хотел бы сделать, это использовать многоугольник, который имеет «линию» в качестве аргумента 1 вместо «заливка», использовать 4 координаты и установить ширину линии равной 2

points = {5, 5, 79, 5, 79, 79, 5, 79}
love.graphics.setLineWidth(2)
love.graphics.polygon("line", points)

Это будет рисоватьфигура, которую вы ищете.

Ваше описание того, что вы пытаетесь закодировать, очень похоже на это руководство по использованию love.physics. и, насколько я понимаю, love.physics этого не делаетпозволяют рисовать полые формы.Поэтому, если вы хотите достичь конечного результата отскакивания от стен объектов, я бы пошел с тем, что описывает учебник, и добавил еще 3 объекта, похожих на наземный объект для стен и крыши

  --Wall left
  objects.wall1 = {}
  objects.wall1.body = love.physics.newBody(world, 25, 650/2) 
  objects.wall1.shape = love.physics.newRectangleShape(50, 650) 
  objects.wall1.fixture = love.physics.newFixture(objects.wall1.body, objects.wall1.shape) 

  --Wall Right
  objects.wall2 = {}
  objects.wall2.body = love.physics.newBody(world, 625, 650/2) 
  objects.wall2.shape = love.physics.newRectangleShape(50, 650) 
  objects.wall2.fixture = love.physics.newFixture(objects.wall2.body, objects.wall2.shape)

  --Roof
  objects.roof = {}
  objects.roof.body = love.physics.newBody(world, 650/2, 25) 
  objects.roof.shape = love.physics.newRectangleShape(650, 50) 
  objects.roof.fixture = love.physics.newFixture(objects.roof.body, objects.roof.shape)

А также добавить чертежную часть в love.draw ()

love.graphics.setColor(0.76, 0.18, 0.05)
love.graphics.polygon("fill", objects.wall1.body:getWorldPoints(objects.wall1.shape:getPoints())) 
love.graphics.polygon("fill", objects.wall2.body:getWorldPoints(objects.wall2.shape:getPoints()))
love.graphics.polygon("fill", objects.roof.body:getWorldPoints(objects.roof.shape:getPoints()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...