2

人が落ちるゲームを作ろうとしています。私の背景テクスチャのサイズは 480x3200 で、カメラが落下中に画面の中央に人物を保持し、その後下で停止するようにゲームを作成しようとしています。しかし、背景が開始画面を超えて拡張され、残りの画像を見ることができません。

私のコードはすべて、現在の画面 (480x800 に設定) に合わせて 480x3200 の画像を縮小するだけで、人が倒れても背景は変わりません。

これが私の WorldRenderer クラスで、さまざまなことを試みましたが、毎回、画像が下に移動し始めたときに、画像の別の部分を人に見せることはできません。

    public WorldRenderer(SpriteBatch b, World w) {
    this.world = w;
    this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT); 
    this.cam.position.set(CAMERA_WIDTH / 2, Person.position.y,0);
    this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
    this.cam.update();
    spriteBatch = b;
    loadTextures();
}

public void render(float delta) { 
    person = world.getPerson();

    moveCamera(); 
    cam.update();
    spriteBatch.setProjectionMatrix(cam.combined);

    spriteBatch.disableBlending();
    spriteBatch.begin();
    renderBackground();
    spriteBatch.end();

    spriteBatch.enableBlending();
    spriteBatch.begin();
    renderObjects();
    spriteBatch.end();

}

private void moveCamera() {
    cam.position.set(cam.position.x, Person.position.y, 0); 
    cam.update();
}

private void renderObjects() {  
    renderPerson();
    renderBlocks();
    renderPlatforms();
}

private void renderBackground() {
    spriteBatch.draw(backgroundTexture, cam.position.x - CAMERA_WIDTH / 2, cam.position.y - CAMERA_HEIGHT / 2, CAMERA_WIDTH, CAMERA_HEIGHT);
}   
}

誰か提案はありますか?

編集: ありがとう、renderBackground の描画を に変更したところ、 spriteBatch.draw(backgroundTexture,0,0, CAMERA_WIDTH, CAMERA_HEIGHT * 4);現在は機能しています。

4

2 に答える 2

1

または、単にParrallaxBackgroundおよびParrallaxLayerクラスを使用できます

この方法では、カメラを管理する必要はありません

上記のクラスで最適化された方法で行われます。

于 2013-06-20T10:51:43.907 に答える