1

我以下列方式创建一个 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);   

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

我还用一个矩形对此进行了测试,并且遇到了同样的问题。

4

2 回答 2

0

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

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

如果它是一个动画精灵,精灵表上的精灵列和行之间有多少间隙?- 如果图像“分割”时存在过多的这些 alpha 间隙,则可以包括在内。

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

乐意效劳。

于 2013-02-23T16:32:33.723 回答
0

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

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

于 2013-02-22T22:54:40.920 回答