1

andengineを使ってサッカーゲームを作成しようとしています.ボールがゴールに入って画面から消えたら、スコアを更新してボールを画面の中央に再配置したいと思います. スコアの更新はうまく機能していますが、再配置はされていません。ボールのコードは次のとおりです。

    final AnimatedSprite ball;
    final Body bodyBall;
    ball = new AnimatedSprite(centerX, centerY,this.mBallTextureRegion, this.getVertexBufferObjectManager());
    bodyBall = PhysicsFactory.createBoxBody(this.mPhysicsWorld, ball, BodyType.DynamicBody, FIXTURE_DEF);
    ball.setUserData(bodyBall);
    ball.animate(200);
    this.mScene.registerTouchArea(ball);
    this.mScene.attachChild(ball);
    this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(ball, bodyBall, true, true));

ゴールを確認するコードは次のとおりです。

    @Override
    public void onUpdate(final float pSecondsElapsed) {
        if(UpperGoal.collidesWith(ball)) {
            ScoreA = ScoreA+1;
            ScoreText.setText(ScoreA+" - " + ScoreB);
            bodyBall.setTransform(new Vector2(CAMERA_WIDTH/2,CAMERA_HEIGHT/2),0);               
            UpperGoal.setColor(1, 0, 0);

bodyBall.setPosition(100,100,0)も試してみます。

4

2 に答える 2

1

Body クラスにはメソッド setPosition がありません。新しい座標を設定するには、

bodyBall.setTransform(new Vector2(x/32,y/32), 0);

box2d はピクセル単位で動作しないため、32 で割る必要があります。

于 2013-05-19T19:23:17.293 に答える