0

我正在使用 andengine 通过 box2d 创建物理模拟。

身体是通过 PhysicsFactory 使用 Sprites 创建的。

我的想法是按照以下模式在程序上定位这些精灵:围绕 externalPoint 旋转

基本上是一个代表我的世界坐标中心的中央精灵,以及一系列通过围绕 myWorld 中心(圆圈内的“X”)旋转基础精灵而创建的克隆精灵。

我尝试在 andengine 内部使用 opengl 方式(翻译、旋转、反向翻译)

super(stamiRadious, 0, image);     //stamiDoadious is te distance from radix (world center) and "petal" attach point
this.setRotationCenter(0, 0);
this.setRotation((float) Math.toDegrees(angleRad));
this.setPosition(this.getX()+radixX, this.getY()+radixY);

但我失败了:结果不正确(最终位置错误,box2d body 属性错误,好像精灵比图像大得多)

我相信问题的一部分取决于我对setRotationand的解释setRotationCenter,并且通常取决于我对 andengine 坐标系统 + box2d 坐标系统的理解。

任何想法/链接到文档/解释?

4

1 回答 1

4

一旦你创建了一个 Sprite 的物理表示(Body),你应该非常小心如何修改 Sprite!通常你根本不再修改 Sprite,而是修改 Body,通过调用

someBody.setTransform(); // Note that positions must be divided by PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT!

希望有帮助:)

于 2011-04-25T11:28:45.527 回答