2014-09-04 92 views
0

大家好,我一直在试图STO在我的地图年底移动我的相机,但它继续移动,这是我的代码:停止移动相机(LIBGDX)

@Override 
public void render(float delta) {  
    //moving tiled map 
    camera.position.x=camera.position.x+Gdx.graphics.getDeltaTime()*200; 

    camera.update(); 
    //........................................... 

    Gdx.gl.glClearColor(1, 0, 0, 0); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 


    // renderer camera and map 
    renderer.setView(camera); 
    renderer.render(); 
    //................................................... 

} 

@Override 
public void show() { 

    batch = new SpriteBatch(); 


    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(); 

} 

}

这是在地图上移动相机的代码,但相机不会停止移动到地图的末端,请帮助我们如何在相机到达地图的末端时让相机停止移动? ??

+0

获取地图渲染的位置。如果camere超出范围,地图的位置+ - 地图的大小。只需停止在这个方向移动相机。 – Veljko 2014-09-04 14:12:46

+0

请veljiKo你能给我的代码停止移动相机? :D – user3922899 2014-09-04 14:22:26

+0

你的问题是我猜的检测。停止移动意味着你不想更新相机位置。你能提供渲染你的地图的代码吗?林不知道什么让你感到困惑。 – Veljko 2014-09-04 14:24:23

回答

0
 if (camera.position.x + camera.viewportWidth/2 >= Float 
      .parseFloat(currentMap.getProperties().get("width").toString()) 
      * TILE_SIZE) { 
      camera.position.x = Float.parseFloat(currentMap.getProperties() 
      .get("width").toString()) 
        * TILE_SIZE - camera.viewportWidth/2; 
     } 

希望你明白上面的那个烂摊子!