Libgdx Box2d несколько SpriteBatch и OrthographicCamera

Я хотел бы иметь два объекта 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 перемещается

Libgdx Box2d несколько SpriteBatch и OrthographicCamera

ОБНОВИТЬ Ничего не изменится, если я закомментирую spriteBatch.setProjectionMatrix(camera.combined); из основного файла

Это может быть не лучший способ иметь игру с HUD, поэтому дайте мне знать, если у вас есть лучшая альтернатива. Спасибо

Рассматривали ли вы возможность добавления отдельной камеры/просмотра для HUD вместо двух пакетов? Управлять должно быть намного проще.

warownia1 12.09.2019 13:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
267
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение. У меня было начало и конец двух перекрывающихся пакетов spriteBatches, из-за чего происходили странные вещи. Я сейчас вызываю начало...конец одного и начало...конец другого.

Другие вопросы по теме