2011-04-25 24 views
0

私はandengineを使ってbox2dで物理シミュレーションを作成しています。座標系とスプライト変換

ボディは、Spritesを使用してPhysicsFactoryによって作成されます。

私の考えは、このパターンに従って、手続きこれらのスプライトを配置することである:rotation around externalPoint

基本的に一つの中心、私の世界は、中心を座標表すスプライト、およびmyWorld中心の周りベーススプライトを回転させることによって作成されたクローン化されたスプライトのシリーズ(円の中の "X")。

私は(翻訳し、バック変換し、回転させる)

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); 

andengine内openglの方法を使用することを試みたが、私は失敗した

:結果は右の(間違った最終的な位置、およびかのように間違ったBOX2D身体プロパティではありませんスプライトは画像よりもはるかに大きいです)

私はsetRotationsetRotationCenterの私の解釈に依存し、一般的には私のエンジン座標系+ box2d座標系の理解に基づいています。

doc/explanationへの思い込み/リンクはありますか?

答えて

4

SpriteのPhysics表現(Body)を作成したら、Spriteの変更方法に非常に注意する必要があります。通常、あなたは:)

を助けたことを願っています

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

を呼び出すことによって、まったくもうスプライトを修正し、代わりにボディを変更しないでください