Я хотел бы иметь два объекта SpriteBatch, один для реальных спрайтов и один для HUD.Я не могу понять, как заставить один SpriteBatch оставаться относительно экрана, но чтобы другой перемещался вокруг тела игрока.У меня есть одна камера OrthographicCamera для тел Box2d и одна для спрайтов.
Я думал, что метод setProjectionMatrix решит эту проблему, но я могу использовать его неправильно.
In the main file:
public void render () {
stateManager.getActiveState().update(Gdx.graphics.getDeltaTime());
spriteBatch.setProjectionMatrix(camera.combined);
spriteBatch.begin();
stateManager.getActiveState().render(spriteBatch);
spriteBatch.end();
debugRenderer.render(world, b2dCamera.combined);
}
stateManager.getActiveState().update(Gdx.graphics.getDeltaTime()); calls:
public void update(float dt) {
this.player.update(dt);
this.camera.position.set(this.player.getCenter().x * Game.getPpm(), this.player.getCenter().y * Game.getPpm(), 0);
this.b2dCamera.position.set(this.player.getCenter().x, this.player.getCenter().y, 0);
this.camera.update();
this.b2dCamera.update();
this.joystick.update();
}
stateManager.getActiveState().render(spriteBatch); calls:
public void render(SpriteBatch spriteBatch) {
this.playBatch.begin();
System.out.println(playBatch.getProjectionMatrix());
System.out.println(spriteBatch.getProjectionMatrix());
font.draw(spriteBatch, "Hello", 0, 60);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
this.player.render(playBatch);
this.joystick.render(spriteBatch);
this.world.step(Gdx.graphics.getDeltaTime(), 8, 3);
this.playBatch.end();
}
Это дает мне «привет», который остается в левом нижнем углу, тело, которое остается в центреи вращается (потому что камера центрирована по центру тела, а мой спрайт (связанный с телом) перемещается вправо, вращаясь синхронно с телом.
Я хочу, чтобы спрайт не двигался (чтобы двигаться в мире, но камера должна центрироваться на нем, как это происходит с телом) и полностью синхронизироваться с телом.
Когда я печатаю матрицу ProjectionMatrix spriteBatch, она одинакова на каждой итерации, но playBatch перемещается
ОБНОВЛЕНИЕ Ничего не изменится, если я закомментирую spriteBatch.setProjectionMatrix(camera.combined);
из основного файла
Это может быть нелучший способ иметь игру с HUD, так чтоЯ знаю, если у вас есть лучшая альтернатива.Спасибо