LibGDX очень странная ошибка - объекты исчезли
Когда я создавал свой первый создатель плиточной карты вlibGDX
Я заметил очень странную ошибку. Я создаю сетку объектов следующим образом:
private static final int GRID_WIDTH=2400;
private static final int GRID_HEIGHT=2400;
private static final int CELL_SIZE=60;
так что вы можете видеть 2400 / 60x2400 / 60 объектов или ячеек. Я создаю свою карту следующим образом:
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);
}
}
}
У меня также есть координаты для моей отладки на экране, поэтому я знаю, где они начали исчезать. Координата Y в порядке, есть от 0 до 2400, но на X они начали исчезать в 1500. Когда я начинаю рисовать там некоторую текстуру, каждый столбец будет виден этой текстуре, например (когда я начинаю писать текстуру в точке x = 2100 каждый исчезнувший столбец будет виден до 2100), и когда я удалю эту текстуру, каждый столбец снова исчезнет до 1500. Таким образом, объекты есть, но их не видно. Это так раздражает, кто-нибудь знает об этой ошибке?
Как вы можете видеть координаты внизу слева, это в начале:
и это когда я добавлю туда некоторые текстуры
[Отредактировано] Код с камерой:
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();
}