大家帮帮我,好了,这是我的代码
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();
...
}