Остановить движение камеры

Я пытался остановить движение моей камеры в конце моей карты, но она продолжает двигаться.

Вот мой код:

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

}
}

Я не смог найти ошибку в своем коде.

Итак, мой вопрос здесь, как остановить движение камеры в конце карты?

1 ответ

У вас есть хотя бы один слой на мозаичной карте, поэтому:

TiledMap map = ......//whatever method that you are using to load a map
//skip to the part that the map is loaded
TiledMapLayer layer = (TiledMapLayer)map.getLayers().get(0);
int layerWidth = layer.getWidth()*layer.getTileWidth();

И теперь вы знаете ширину слоя в пикселях, и вы можете убедиться, что camera.position.x+Gdx.graphics.getDeltaTime()*200; никогда не превышает эту длину.

Другие вопросы по тегам