2011-04-25 92 views
0

我正在使用andengine通过box2d创建物理模拟。坐标系和精灵转换

这些物体是通过PhysicsFactory使用Sprites创建的。

我的想法是程序上定位这些精灵,下面这个模式:rotation around externalPoint

代表我的世界坐标中心基本上是一个中央的精灵,而且是通过绕myWorld中心基地精灵创造了一系列克隆精灵(圆圈内的“X”)。

我试图使用OpenGL方式中andengine(平移,旋转,后翻译)

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的身体财产,犹如该精灵比图像大得多)

我相信部分问题依赖于我对setRotationsetRotationCenter的解释,并且一般以我对andengine坐标系统+ box2d坐标系统的理解为依据。

任何想法/链接到doc /解释?

回答

4

一旦你创建了一个Sprite的Physics representation(Body),你应该非常小心修改Sprite!通常你不会修改雪碧了可言,而是通过调用

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

希望这有助于:)

修改身体,