gpt4 book ai didi

java - Libgdx Box2d 多个 SpriteBatch 和 OrthographicCamera

转载 作者:行者123 更新时间:2023-12-02 06:00:46 24 4
gpt4 key购买 nike

我想要两个 SpriteBatch 对象,一个用于实际 Sprite ,一个用于 HUD。我不知道如何使一个 SpriteBatch 保持相对于屏幕的位置,但让另一个 SpriteBatch 以玩家 body 为中心四处移动。我有一台用于 box2d 主体的正交相机,另一台用于 Sprite 。

我认为 setProjectionMatrix 方法可以解决这个问题,但我可能使用错误。

在主文件中:

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());调用:

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);调用:

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

这给了我停留在左下角的“hello”,一个停留在中心并旋转的 body (因为相机以 body 的中心为中心,而我的 Sprite (与 body 相关联)移动到向右同时与 body 同步旋转。

我希望 Sprite 不移动(在世界中移动,但相机应该像 body 一样以它为中心)并与 body 完全同步。

当我打印 spriteBatch 的 ProjectionMatrix 时,每次迭代都是相同的,但 playBatch 移动

image

更新如果我从主文件中注释掉 spriteBatch.setProjectionMatrix(camera.combined); ,则不会发生任何变化

这可能不是使用 HUD 进行游戏的最佳方式,所以如果您有更好的选择,请告诉我。谢谢

最佳答案

我找到了解决方案。我让两个 spriteBatches 的开始和结束重叠,这导致奇怪的事情发生。我现在调用一个的 begin ... end 和另一个的 begin ... end。

关于java - Libgdx Box2d 多个 SpriteBatch 和 OrthographicCamera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com