私は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までOKですが、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();
}
表示されたコードが正しいように見えます。どのようにカメラを動かしているのか教えてください。私はまだそれを証明することはできませんが、私のスパイダーセンスはカメラの問題があると私に言っています。 – John
カメラの設定でコードを編集しました:) – user3396072