LibGdx OrthographicCamera翻译

时间:2015-07-19 15:58:02

标签: android libgdx

我正在尝试移动相机滚动到我的游戏中但没有任何反应。

我的代码:

public class Terrain implements Screen {
 @Override
public void show() {
    widht = Gdx.graphics.getWidth();
    height = Gdx.graphics.getHeight();
    cam = new OrthographicCamera();
    cam.setToOrtho(true, widht, height);
    batch = new SpriteBatch();
    batch.setProjectionMatrix(cam.combined);
    render = new ShapeRenderer();
    render.setProjectionMatrix(cam.combined);
    render.setAutoShapeType(true);
    cam.update();}

 @Override
public void render(float delta) {
    processInput();

    Gdx.gl.glClearColor(0.929f, 0.819f, 0.772f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.setProjectionMatrix(cam.combined);

    batch.begin();
    render.begin();
    render.rect(0,50,1000,25);
    render.end();
    batch.end();



}

private void processInput() {
    if(Gdx.input.isTouched()){
        cam.translate(25,0);
        cam.update();


    }

}

当我点击屏幕时,没有任何反应。如果我查看相机的位置,她移动得很好,但矩形仍然在同一个地方。

对我的错误有任何想法吗?

1 个答案:

答案 0 :(得分:0)

这是因为ShapeRenderer默认为相机坐标。

如果要更改此设置,则需要将渲染器上的投影矩阵设置为其他内容。

例如:

@Override
public void render(float delta) {
    processInput();

    Gdx.gl.glClearColor(0.929f, 0.819f, 0.772f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.setProjectionMatrix(cam.combined);

    batch.begin();
    // Switch to the batch instead of the default.
    render.setProjectionMatrix(batch.getProjectionMatrix());
    render.begin();
    // Changed the size of the rectangle so it's easier to see.
    render.rect(100, 50, 100, 25);
    render.end();
    batch.end();
}

现在,当您点击屏幕时,矩形将显示为向左移动,直到它不再可见。