2010-10-29 2 views
0

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

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

+1

Это справедливый вопрос, но для большей экспозиции вам может потребоваться расспросить [Game Dev SE] (http://gamedev.stackexchange.com). Я не участвую там, но это, похоже, соответствует тем вопросам, которые в настоящее время находятся на главной странице Game Dev. – Pops

+0

Мой ответ здесь охватывает тот же вопрос: http://stackoverflow.com/questions/3801332/data-structure-for-levels-in-games/3804276#3804276 – Martin

ответ

2

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

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

После этого это всего лишь вопрос связывания всего этого.

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

1

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

Смежные вопросы