Я сам изучаю C++ и просматриваю 2D-карту.Центрирующий спрайт или движущаяся камера? C++/Opengl
Я читал через этот пост scrolling
here, который основан на этом tiling tutorial.
Используя приведенный выше учебник и помощь от Pearson, Computer Graphics with OpenGL
книги я написал небольшую программу, которая рисует 40x40
плиточный мир и Sprite
(также плитку).
В плане чертежа/рендеринга сама карта (или мир) - это задний слой, а Sprite - самый передний (или верхний) слой. Я предполагаю, что это хороший способ сделать это, поскольку его легче использовать две плитки для взаимодействия, чем плитка и собственный спрайт или прямоугольник. Это верно?
Я реализовал функцию Keyhandling()
, которая позволяет перемещать map
внутри viewport
с использованием keyboards arrow keys
. У меня есть переменная offsetx, offsety
, что при нажатии клавиши увеличивается или уменьшается. В зависимости от того, присваиваю ли я переменную map
или sprite
, я могу больше или больше в любом направлении на экране.
Ничего не работает очень хорошо, поэтому я назначил переменные для обоих (карта и спрайт), но с положительными значениями для спрайта и отрицательными для карты. Таким образом, при нажатии клавиши это позволяет моему Sprite двигаться в одном направлении, пока карта движется в противоположном направлении.
Моя проблема заключается в том, что спрайт скоро движется достаточно, чтобы покинуть окно, и этого недостаточно, чтобы принести большую часть карты в сцену. (В окне отображается только 1/8th
из плитки).
Я думал весь день, и я думаю, что эффективным/эффективным способом решения этой проблемы было бы исправить sprite
в центре экрана и при нажатии клавиши map
перемещается ... I Не уверен, как это реализовать.
Будет ли это хорошим способом? Или ожидается, что он переместит окно просмотра или камеру?