使用AndEngine和Box2D渲染1像素细线

时间:2013-02-22 16:03:02

标签: android box2d andengine

我以下列方式创建了PhysicsWorld:

this.mPhysicsWorld = new FixedStepPhysicsWorld(30, new Vector2(0, 0), false, 8, 1);

我以下列方式创建一条线:

final Line line = new Line(object.getX(), object.getY(),object.getX()+object.getWidth(), object.getY()+object.getHeight());
final FixtureDef lineFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1f);
PhysicsFactory.createLineBody(this.mPhysicsWorld, line, lineFixtureDef);
line.setVisible(true);
mScene.attachChild(line);   

这应该允许在一个像素条上发生碰撞,但不会产生所需的效果。在条形图下面至少有几个像素,在左边有几个像素,高度和右边都很好。

我也用矩形测试了这个问题,并且遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

听起来你所说的是线条在错误的位置呈现。您从Object的位置获取行位置。我的猜测是你期望从“对象”的中心渲染线,而是从对象的左上角渲染。这是AndEngine中预期和期望的行为。如果你想让它从中心渲染,你需要计算物体的中心位置,而不仅仅是X&是的。

相关地,您可能不应该考虑像素,而是考虑场景坐标。我假设当你说“像素”时,你将它用作场景坐标的简写,但如果没有,请注意它们不是同一个东西。

答案 1 :(得分:0)

如果您有这些问题,请查看以下内容,

检查图像,是否可以访问边缘的alpha像素?

如果它是一个动画精灵,精灵列和精灵表上的行之间有多少差距? - 如果图像被“分割”,可能会包含多余的α间隙。

此外,如果您使用的是盒体,那么精灵本身是什么?如果它是一个球使用圆体或如果它是不规则的形状,你想要更准确的碰撞使用多边形体。

很高兴能提供帮助。