2

現在、480x3200 のマップがあり、上から人が落ちるゲームがあります。カメラは人を追っていき、人が落ちると台があります。ゲーム中にプラットフォームを回転させたり動かしたりできるように、プラットフォームをタッチ可能にする必要があるため、元は単なるスプライトだったプラットフォームをイメージにしました。

スプライトから画像に変更すると、人が落ちるとき (カメラが下に動き始めて人を追いかける) を除いて、すべて正常に機能し、プラットフォームもカメラと共に移動するため、落下しているように見えます。プラットフォームは 1 つの場所にとどまり、カメラと一緒に移動しないようにする必要があります。カメラが下に移動し続けると、プラットフォームは最終的にビューから消えます。

プラットフォームのセットアップとステージへの追加

@Override
public void show() {
    ...
    platform = new Image(new Texture(Gdx.files.internal("img_platform.png")));
    platform.setX(2);
    platform.setY(110);
    platform.setOrigin(platform.getWidth() / 2, platform.getHeight() / 2);

@Override
public void render(float delta) {
    ....
    stage.addActor(platform);   
}

API を調べてみましたが、カメラ、ステージ、または画像を変更する必要があるのか​​、それとも考えもしなかった何かを変更する必要があるのか​​ を判断できません。何か案は?

編集:

public WorldRenderer(FallDown game, SpriteBatch batch, World w) {
    this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.position.set(CAMERA_WIDTH / 2, CAMERA_HEIGHT / 2, 0);
    this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
    cam.position.set(CAMERA_WIDTH / 2, 105, 0);
    stage = new Stage(480, 800, true);

    platformTexture = new Image(new Texture(Gdx.files.internal("img_platform.png")));
    platformTexture.setX(2);
    platformTexture.setY(100);
    platformTexture.setOrigin(platformTexture.getWidth() / 2, platformTexture.getHeight() / 2);
    ...

}

public void render(float delta) { 
    stage.addActor(platformTexture);
    moveCamera();
    ...
}

private void moveCamera() {
    if (Person.getPosition().y < cam.position.y) 
        cam.position.y = Person.getPosition().y;
    cam.update();
}

...
4

2 に答える 2

1

通常、これはアクター (落下している) にカメラを設定し、アクターを下に移動することで実現されます。アクターが下に移動すると、カメラはプラットフォームを静止させたままアクターに追従します。

これは役に立ちますか??

于 2013-07-04T05:43:06.410 に答える
0

画像を使用する代わりに、スプライトのみを使用することにしました。必要なすべてのことを実行でき、ステージが現在の画面であることに問題はありません

于 2013-07-10T23:34:53.873 に答える