2013-07-25 5 views
0

Я использую Libgdx для рисования сцены 2d. Перед нанесением я делаю это:Более элегантный подход к фотоаппарату

batch.setProjectionMatrix(camera.combined); 

Как и ожидалось, (0,0) координаты больше не находится в нижней левой части экрана, но теперь в середине экрана.

Что бы более элегантное решение расположить всю сцену правильно:

1) Перевести/положение камеры соответственно, чтобы показать все, что есть на экране.

2) Нарисуйте все, что, имея в виду, что (0,0) находится в середине сейчас, например, так:

batch.draw(background, -background.getRegionWidth()/2, -background.getRegionHeight()/2); 

Обратите внимание, что я на самом деле делает Parallax scrolling и первый вариант диспозиции мой средний план слои объектов, как и ожидалось. Поэтому, если нет хорошего решения этой проблемы, я больше склоняюсь к второму варианту.

ответ

0

Старайтесь, чтобы ваши объекты в «мировом пространстве» и сохранить все переводы из «мирового пространства» на экран в «камере» («камера» это всего лишь абстракция вокруг матриц, которые определены для перевести мировое пространство на экранное пространство). Загрязнение мест вашего объекта информацией о экране вызовет путаницу и проблемы.

В частности, в вашем случае, просто позвоните

camera.translate(width/2, height/2, 0); 

получить (0, 0) обратно в нижнем левом углу (если ваш «мир пространство» полностью в положительном координатном пространстве.

Для получения дополнительной информации найдите вокруг Stack Overflow для вопросов с OpenGL-камерой, например: In 3d graphics, what is camera or eye space?