簡體   English   中英

如何在libgdx Scene2d的舞台上放大和縮小?

[英]How to zoom in and out on a stage in libgdx Scene2d?

我正在使用libgdx進行2D游戲,並將六角形演員添加到一個組中,然后將其添加到舞台中。 對於一個正常的攝像頭,你可以使用camera.zoom在渲染方法在放大和縮小沿camera.translate平移世界各地。

我一直在使用stage.getCamera()獲取舞台使用的相機,我仍然可以調用stage.getcamera().translate但是沒有stage.getCamera().zoom選項。

這是我的代碼:

//import statements

public class HexGame implements ApplicationListener{

private Stage stage;

private Texture hexTexture;
private Group hexGroup;

private int screenWidth;
private int screenHeight;


@Override
public void create() {

    hexTexture = new Texture(Gdx.files.internal("hex.png"));

    screenHeight = Gdx.graphics.getHeight();
    screenWidth = Gdx.graphics.getWidth();

    stage = new Stage(new ScreenViewport());

    hexGroup = new HexGroup(screenWidth,screenHeight,hexTexture);

    stage.addActor(hexGroup);
}

@Override
public void dispose() {
    stage.dispose();
    hexTexture.dispose();
}

@Override
public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();

    handleInput();
    stage.getCamera().update();

}


private void handleInput() {

    if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
        stage.getCamera().translate(-3, 0, 0);
    }
    if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
        stage.getCamera().translate(3, 0, 0);
    }
    if (Gdx.input.isKeyPressed(Input.Keys.DOWN)) {
        stage.getCamera().translate(0, -3, 0);
    }
    if (Gdx.input.isKeyPressed(Input.Keys.UP)) {
        stage.getCamera().translate(0, 3, 0);
    }

    //This is the part that doesn't work
    /*
    if (Gdx.input.isKeyPressed(Input.Keys.Z)) {
        stage.getCamera().zoom += 0.02;
    }
    */

    }



@Override
public void resize(int width, int height) {
    stage.getViewport().update(width, height);
}

@Override
public void pause() {
}

@Override
public void resume() {
}


}

任何幫助表示贊賞,如果我的代碼有任何其他問題,請告訴我,我是libgdx的新手。 謝謝

Zoom可在OrthographicCamera類中使用,默認情況下Stage類創建OrthographicCamera

/** Creates a stage with a {@link ScalingViewport} set to {@link Scaling#stretch}. The stage will use its own {@link Batch}
     * which will be disposed when the stage is disposed. */
    public Stage () {
        this(new ScalingViewport(Scaling.stretch, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), new OrthographicCamera()),
            new SpriteBatch());
        ownsBatch = true;
    }

所以你需要的是將你的相機投射到OrthographicCamera

((OrthographicCamera)stage.getCamera()).zoom += 0.02f;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM