LibGDX error muy extraño: los objetos han desaparecido

Cuando estaba creando mi primer creador de mapas en mosaico enlibGDXNoté un error muy extraño. Estoy creando una cuadrícula de objetos como este:

private static final int GRID_WIDTH=2400;
private static final int GRID_HEIGHT=2400;
private static final int CELL_SIZE=60;

para que pueda ver que hay 2400 / 60x2400 / 60 objetos o celdas. Estoy creando mi mapa así:

private void createMap(){
    cells = new Cell[GRID_WIDTH/CELL_SIZE][GRID_HEIGHT/CELL_SIZE];

    for(int i=0;i<GRID_WIDTH/CELL_SIZE;++i){
        for(int j=0;j<GRID_HEIGHT/CELL_SIZE;++j){
            cells[i][j]=new Cell(textures[0],i*CELL_SIZE,j*CELL_SIZE);
        }
    }
}

También tengo coordenadas para mi depuración en la pantalla, así que sé dónde comenzaron a desaparecer. La coordenada Y está bien, hay de 0 a 2400, pero en la X comenzaron a desaparecer a las 1500. Cuando empiece a dibujar allí alguna textura, cada columna será visible para esa textura, por ejemplo (cuando empiece a escribir textura en x = 2100 cada columna desaparecida será visible para 2100) y cuando elimine esa textura, cada columna desaparecerá nuevamente a 1500. Por lo tanto, los objetos están allí pero no son visibles. Es tan molesto ¿Alguien sabe acerca de este error?

Como puede ver, las coordenadas están en la parte inferior izquierda, esto es al principio:

y aquí es cuando agregaré algo de textura

[Editado] Código con cámara:

        private float x=GRID_WIDTH/2,y=GRID_HEIGHT/2;

        @Override
        public void render(float delta) {
            batch = new SpriteBatch();
            camera=new OrthographicCamera(CAM_WIDTH,CAM_HEIGHT);
            viewPos = new Vector3();

            Gdx.gl.glClearColor(0, 0, 0, 1);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
            viewPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
            camera.unproject(viewPos);

            batch.begin();

            if(Gdx.input.isKeyPressed(Input.Keys.RIGHT) || Gdx.input.isKeyPressed(Input.Keys.D))
                x+=SPEED*Gdx.graphics.getDeltaTime();
            if(Gdx.input.isKeyPressed(Input.Keys.LEFT) || Gdx.input.isKeyPressed(Input.Keys.A))
                x-=SPEED*Gdx.graphics.getDeltaTime();
            if(Gdx.input.isKeyPressed(Input.Keys.UP) || Gdx.input.isKeyPressed(Input.Keys.W))
                y+=SPEED*Gdx.graphics.getDeltaTime();
            if(Gdx.input.isKeyPressed(Input.Keys.DOWN) || Gdx.input.isKeyPressed(Input.Keys.S))
                y-=SPEED*Gdx.graphics.getDeltaTime();
            stage.act(Gdx.graphics.getDeltaTime());
            stage.draw();

            camera.position.set(x,y,0);
            camera.update();
            batch.setProjectionMatrix(camera.combined);
            batch.end();
      }

Respuestas a la pregunta(1)

Su respuesta a la pregunta