я задал вопрос вчера о проблеме у меня было отображение уровня в игре C ++ 2D GameBoy Advance, когда уровень больше размера экрана. Тем не менее, я, возможно, был немного тоже конкретный, и поэтому я хочу спросить об этом в более общем плане.
Как проще всего попытаться отобразить большой уровень прокрутки (512×512 пикселей) на экране, который намного меньше (240×160 пикселей)?
Краткое описание моей структуры кода на данный момент: у меня есть базовый класс с именем Object, который определяет (x, y) позицию, ширину и высоту, есть класс Entity, который наследуется от Object и добавляет компоненты скорости, и класс Character, который наследует от Entity и добавляет функции движения. Мой игрок — это объект персонажа, а ящики, которые я хочу забрать, — это массив объектов сущности. И игрок, и массив кубов являются членами класса Level, который также наследуется от Object.
До сих пор я реализовал игру, которая очень хорошо работает, когда уровень совпадает с размером экрана — все позиции объектов сохраняются относительно их положения на уровне. Тем не менее, у меня возникли серьезные проблемы, пытаясь решить, как отображать объекты в правильном месте, когда уровень смещен на экране. Я хочу, чтобы область просмотра никогда не выходила за пределы уровня, и если область просмотра не находится напротив края уровня, отобразите проигрыватель в середине экрана.
Я должен попытаться решить это, используя несколько простых переменных смещения, чтобы переместить фон? Если да, то в каком порядке следует рассчитывать и применять смещения? Как смещения будут по-разному применяться к игроку и боксам? Или вместо этого я должен попытаться создать еще один объект в качестве члена класса уровня для области просмотра? Как бы я мог рассчитать смещения с помощью этого?
Любой предоставленный совет будет с благодарностью.
Задача ещё не решена.