0

BoundCameraをカスタマイズし、updateメソッドを次のようにオーバーライドしました。

@Override
public void onUpdate(float pSecondsElapsed) {
    // TODO Auto-generated method stub
    super.onUpdate(pSecondsElapsed);
    if(chaseEntity != null) {

        tempHeight = (chaseEntity.getY() * PIXEL_TO_METER_RATIO_DEFAULT) + PlayLevelActivity.CAMERA_HEIGHT/2;

        if(tempHeight < heightCovered) {
            setBounds(0, 0, PlayLevelActivity.CAMERA_WIDTH, tempHeight);

            heightCovered = tempHeight;
        }
    }

}

カメラを次のように初期化しました:

mCamera = new MyBoundCamera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT, 0, CAMERA_WIDTH, 0, CAMERA_HEIGHT);

追跡エンティティを常に中心に置きたいです。今私が直面している問題は、最初にカメラが実体を追いかけることです。エンティティがどんどん高くなるにつれて、y方向の画面境界を超えます。エンティティを常に中央に維持するために、updateメソッドでカメラの境界を更新していますが、機能していません。chaseEntity.getY()は、物理ボディのy位置を取得します。誰かが私がどこで間違っているのか知っていますか?

4

1 に答える 1

0

使用する場合

this.mBoundChaseCamera.setChaseEntity(Sptite);
setBoundsEnabled(false);

その後、スプライトは常に画面の中央に表示されます。欠点は、スプライトが境界を超える可能性があることです。スプライトを境界内に保つには、独自のメソッドを実装する必要があります。

コメントの中で、ある時点でスプライトを落下させたいが、落下中にスプライトを中央に残したくないと述べました。あなたはただ使うことができます

this.mBoundChaseCamera.setChaseEntity(null);

次に、スプ​​ライトを画面の下部にドロップします。これにより、papi jump と同様の効果が得られるはずです。

于 2013-02-14T16:42:03.710 に答える