【问题标题】:love2d body outline rectanglelove2d 身体轮廓矩形
【发布时间】:2018-12-11 17:27:51
【问题描述】:

所以我有一个问题。如何绘制这些中间有间隙的矩形,

我想做的是在其上使用一个边界框,以便对象可以在内部移动并与内部边缘碰撞。

我尝试使用多边形,但是当我给出这个顶点时:

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)

它在里面填充了一个正方形,但我想要一个间隙,并且我希望碰撞框只覆盖红色的一面。我该怎么办?

【问题讨论】:

    标签: lua 2d-games love2d


    【解决方案1】:

    我要做的是使用具有“线”作为参数 1 而不是“填充”的多边形,使用 4 个坐标,并将线的宽度设置为 2

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

    这将绘制您正在寻找的形状。

    您对您尝试编码的内容的描述听起来很像this tutorial on using 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()))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 2014-12-12
      • 2012-05-10
      • 2019-01-26
      相关资源
      最近更新 更多