Я портирую игру с iOS и Windows Phone на Android. Большая часть кода, которым я следую для порта, взята из версии для Windows Phone, просто потому, что она больше всего похожа на Java. Мой вопрос относится к классу OrthographicCamera в LibGDX.
Я использую метод контейнера Game Object as Component для этой игры. Об этом можно прочитать здесь: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ просто чтобы вы поняли, о чем я говорю. Таким образом, почти все в игре расширяет класс компонентов Component. И каждый игровой объект, то есть мяч, представляет собой GameObject, который состоит из компонентов, то есть Sprite, RigidBody (для физики), Transform2 (положение, вращение и т. д.). Сюда входит класс Camera2, который просто обертывает член OrthographicCamera.
У меня есть две проблемы, и я исследую их без конца. Я не могу понять, как сделать слои. В игре есть ящик, который пользователь может открыть, проведя пальцем вниз. Это должно быть поверх всего остального в игре. Парень, разработавший версию XNA, добился этого, имея несколько пакетов SpriteBatch и рассматривая каждый пакет SpriteBatch как слой. Это не работает в LibGDX, и использование нескольких SpriteBatches является плохой практикой. Проблема в том, что игровые объекты организованы в виде дерева и отображаются в соответствии с обходом дерева, поэтому порядок в конечном итоге зависит от того, когда объект был вставлен в дерево. Я изучил DecalBatch, чтобы использовать порядок Z, но это потребовало бы значительного рефакторинга, так как игра почти готова. Как я уже сказал, я пытался использовать несколько SpriteBatches, но по какой-то причине это тоже не работает.
Поскольку это уже длинный пост, я задам свой второй вопрос в отдельном посте.