Большая карта в 2d видеоигре - PullRequest
0 голосов
/ 29 октября 2010

надеюсь, что не будет .. скучно.В моей разработке видеоигр (2d, в Sdl.NET) я хотел бы создать некоторую 2d "карту" (карта сверху вниз, также называемая flybird, я полагаю).Я хотел бы создать большую карту, например 4000x4000 пикселей.Очевидно, я хотел бы показать только то, что может быть разрешение пользователя.Если мой пользователь использует 800x600, я должен показать «обрезку» моей большой карты.

Как лучше всего решить проблему с прокруткой экрана?И как показать только правильный «кусок» моей карты (местности)?

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

В обычной разработке GUI подход заключается в использовании ViewPort.Не уверен насчет специфики вашей платформы, но ViewPort заботится о том, что пользователь может видеть, отслеживая, куда помещается большая «Большая карта» ViewPort.В обычном программировании с графическим интерфейсом у вас есть полосы прокрутки для перемещения, но вам, вероятно, придется управлять этим перемещением самостоятельно.

Основная предпосылка ViewPort заключается в том, что документ намного больше, чем видит пользователь.Я предполагаю, что Sdl.NET не имеет такой конструкции как таковой.(Я не мог найти документы по API).Вы можете создать его самостоятельно, который позаботится о перетаскивании правой части фона или большой карты на сам экран.ViewPort - это всего лишь пара точек для отслеживания верхнего левого угла экрана и нижнего правого угла экрана.Дайте себе пару способов переместить ViewPort и убедитесь, что он находится в границах Большой Карты.

После этого достаточно просто связать все это вместе.

Это не редкость дляиметь дерево всех объектов в сцене, чтобы вы могли убедиться, что отображаете только те объекты, которые должны быть на экране.Это поможет вашей функции «Рисование» автоматически бликовать фон и любые элементы переднего плана внутри порта просмотра.

1 голос
/ 29 октября 2010

Я немного погуглил и нашел вот что, может быть, то, что вы хотите: http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/gfxsdl/tut6

Найдите функции DrawImg и DrawScroll.

1 голос
/ 29 октября 2010

Звучит как хорошая возможность использовать квад-карту.Это позволит вам «нарезать» большую карту и загружать «куски» на лету

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...