Итак, я супер топил, чтобы начать использовать LibGDX для моего первого названия Android для OUYA и ПК, но я сталкиваюсь с некоторыми проблемами с LibGDX. (На все мои вопросы можно ответить, посмотрев источник, но я действительно пытаюсь понять варианты дизайна).Поймите LibGDX Система координат и рисование спрайтов
Для начала система координат. Я создал проект, используя баночку Setup Project, и это создает OrthographicCamera как так
camera = new OrthographicCamera(1, h/w);
Из моего чтения, я понимаю, что LibGdx использует левый нижний угол для 0,0 и ЮП. Хорошо. Я вижу, что довольно легко изменить на y вниз, если захочу, но я не понимаю следующий бит кода, который был создан.
Для созданного по умолчанию спрайта позиция устанавливается так.
logoSprite.setOrigin(logoSprite.getWidth()/2, logoSprite.getHeight()/2);
logoSprite.setPosition(-logoSprite.getWidth()/2, -logoSprite.getHeight()/2);
Когда я запускаю эту базовую программу, я вижу, что изображение логотипа, которое я добавил, сосредоточено на экране. Я пытаюсь понять, почему значения отрицательны в заданной позиции и почему она использует ширину и высоту sprite вместо графики w и h порта представления? Если я перейду на ширину и высоту экрана, изображение будет рисоваться в некотором нечетном положении в нижней правой части экрана.
Мой следующий вопрос: sprite.setSize vs sprite.setScale. Почему разница между ними? (Кажется, они делают то же самое, кроме setScale оставляет getWidth и getHeight неизменным).
Поскольку в моей игре будет использоваться 2D-камера для панорамирования, масштабирования и вращения, я пытаюсь понять, насколько я могу, о структуре libgdx, прежде чем начинать писать любой код.
В качестве побочного примечания у меня есть разработка игр и математический фон, и я сделал несколько 2D и 3D игр, используя XNA. Я нахожу LibGdx немного разочаровывающим, так как он не абстрагирует OpenGL столько, сколько я ожидал, и пока 2D-рисунок, который я экспериментировал, кажется более запутанным, чем должно быть!
Я также хотел отметить, что я планирую использовать позвоночник для своих анимаций. Должно ли это изменить мой выбор на использование y-up или y-down?
Спасибо за ответ. Я ожидал, что изображение будет центрировано при рисовании, установив начало координат в центр текстуры. Вот как это работает в XNA, но похоже, что LibGDX всегда рисует нижний левый угол независимо от источника. Другое дело, что камера была на 0,0, поэтому центр экрана равен 0,0. Код примера не добавляет вам вызов camera.update, поэтому мои изменения в позиции при масштабировании не применялись. Мой вопрос о позвоночнике был непосредственно связан с переключением камеры на y-down. Есть ли способ перевернуть анимацию позвоночника, как будто вы перевернете регион? – jjhavokk
да, вы можете перевернуть анимацию, в libgdx, если мы хотим перевернуть анимацию, мы просто поместили ее в спрайт, а затем переливаем спрайт, как этот image.flip (true, false); –