图形绘制和碰撞区域不匹配

我开始使用love2d的物理模块制作游戏。

我尝试制作一个(水平的)墙对象让玩家行走,但出现了问题:

玩家可以通过墙体绘制的部分(发生在右侧),并且可以在看起来像是“空气”的墙左侧走过。

似乎碰撞区域和绘制不完全匹配。

这是我在 Wall 类中构建墙体的方法:

function Wall:new(x, y, w, h, world)
    self.x = x
    self.y = y
    self.w = w
    self.h = h

    self.body = love.physics.newBody(world, self.x, self.y, "kinematic")
    self.shape = love.physics.newRectangleShape(self.w, self.h)
    self.fixture = love.physics.newFixture(self.body, self.shape, 100)
end

我使用这些变量来调用构造函数(在 main.lua 中)

objects.wall = Wall(40, height - 60, 200, 5, world)

这是我绘制它的方法(在 Wall 类中)

love.graphics.rectangle("fill", self.body:getX(), self.body:getY(), self.w, self.h)

我使用 rxi/classic 来制作类。

墙体被绘制出来了,但与玩家的交互很奇怪。

截图在这里 https://imgur.com/sbLIY8v

点赞
用户5889692
用户5889692

事实证明,newRectangleShape需要矩形的中心的x和y坐标,而我的绘制函数是错误的,因为我认为x和y是左上角的坐标。

2016-07-04 14:29:07