0

AndEnginerevoluteJointの例についていくつか説明したいと思います。以下のコードでは、connectionLineのx1、y1とx2、y2は同じ値です。したがって、これにより単一のポイントが作成されます。なぜこれが行われるのですか?

final Line connectionLine = new Line(anchorFaceX + spriteWidth / 2, anchorFaceY +
spriteHeight / 2, anchorFaceX + spriteWidth / 2, anchorFaceY + spriteHeight / 2, 
this.getVertexBufferObjectManager());

setPositionは以下で何をしますか?回転しているように見えるように線を変換しますか?

this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(anchorFace, 
anchorBody, true, true){
@Override
public void onUpdate(final float pSecondsElapsed) {
super.onUpdate(pSecondsElapsed);
final Vector2 movingBodyWorldCenter = movingBody.getWorldCenter();
connectionLine.setPosition(connectionLine.getX1(), connectionLine.getY1(),   
 movingBodyWorldCenter.x * PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT, 
movingBodyWorldCenter.y * PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT);

}
});

ご不明な点がございましたら、お気軽にお問い合わせください。体が動くときに体にしっかりとつながる線を作成する必要があります。

4

1 に答える 1

0

体が次のように動くときに接続されたままの線で体を接続することができました

// Join adjacent bodies
          if(i > 0) {
                 connectionLine[i] = new Line(centers[i][0],centers[i][1],centers[i-1][0],centers[i-1][1],lineWidth,this.getVertexBufferObjectManager());
                 connectionLine[i].setColor(0.0f,0.0f,1.0f);
                 this.mScene.attachChild(connectionLine[i]);     

          }

          // Join the first body with the last body
          if(i == 19){
              connectionLine[0] = new Line(centers[0][0],centers[0][1],centers[19][0],centers[19][1],lineWidth,this.getVertexBufferObjectManager());
              connectionLine[0].setColor(.0f,.0f,1.0f);
              this.mScene.attachChild(connectionLine[0]);   
          }

          // Update connection line so that the line moves along with the body
          this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(circle[i], circleBody[i], true, true) {
              @Override
                public void onUpdate(final float pSecondsElapsed) {
                    super.onUpdate(pSecondsElapsed);
                    for(int i=1;i < nBodies;i++) {
                        connectionLine[i].setPosition(circle[i].getX(),circle[i].getY(),circle[i-1].getX(),circle[i-1].getY());

                    }
                    connectionLine[0].setPosition(circle[0].getX(),circle[0].getY(),circle[19].getX(),circle[19].getY());
                }
          }       

        );
于 2013-01-16T04:40:41.297 に答える