如何使用libgdx滚动地图



大家帮帮我,好了,这是我的代码

private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private OrthographicCamera camera;
@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    position.y = position.y - 4;

@Override
public void show() {
    map = new TmxMapLoader().load("maps/map1.tmx");
    renderer = new OrthogonalTiledMapRenderer(map);
    camera = new OrthographicCamera();
}
@Override
public void hide() {

}
@Override
public void create() {
}
@Override
public void resize(int width, int height) {
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.position.set(width/2f, height/3f, 0); //by default camera position on (0,0,0)
    camera.update();
}
@Override
public void render() {

}
@Override
public void pause() {

}
@Override
public void resume() {

}
@Override
public void dispose() {
    map.dispose();
    renderer.dispose();
}

}

与此代码我看到屏幕上的地图,但我想要的地图滚动,它应该在屏幕结束时停止,我想继续滚动,直到地图结束,我已经尝试了3天,请帮助我的家伙:(

如果我答对了你的问题:你让它滚动,但它不会停止。

如果你想让它停止,你必须添加一个条件

public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    position.y = position.y - 4;
    if(position.y < camera.viewportWidth - mapHeight)
    {
       position.y = camera.viewportWidth - mapHeight;
    }
}

首先,您需要在地图上设置视图。然后你需要改变相机位置和更新相机。如果你想在屏幕结束时停止——就像前面提到的那样写。

所以你的部分代码看起来像:

@Override
public void show() {
    ...
    camera = new OrthographicCamera();
    renderer = new OrthogonalTiledMapRenderer(map);        
    renderer.setView(camera);
    ...
}
public void render(float delta) {
    ...
    camera.position.y -= 4 * delta; //4 units per second
    if(camera.position.y < camera.viewportHeight/2 - mapHeight) {
       camera.position.y = camera.viewportHeight/2 - mapHeight;
    }
    camera.update();        
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    renderer.render();   
    ...
}

最新更新