love2d矩形外框

我有一个问题。我怎么能够在中间留下间隙来绘制这些方块呢?

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)

它制造了一个在内部填充的正方形,但是我想要一个间隙,我想要碰撞框只覆盖红色的侧面。我该怎么做?

点赞
用户6331353
用户6331353

我会使用多边形,参数1改为"line"而非"fill",使用四个坐标,并将线的宽度设置为2。

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

这将绘制出您需要的形状。

您描述的编码内容听起来很像使用love.physics的教程,据我所知,love.physics不允许绘制空心形状。因此,如果您想实现物体从墙壁弹回的最终结果,我建议按照教程的描述添加3个类似于地面对象的对象作为墙壁和屋顶:

  --左墙
  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)

  --右墙
  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)

  --屋顶
  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()))
2018-12-09 04:04:02