Как создать прокрутку карты в 2D actionScript / flex 3 (flash) игре? - PullRequest
0 голосов
/ 29 июня 2009

Я создаю многопользовательскую 2D-игру в космическом пространстве во флэш-памяти (actioncript 3 с flex builder 3). Персонаж игрока (корабль) всегда будет в центре. Поскольку он должен выглядеть так, как будто корабль движется, хотя на самом деле он всегда находится в центре, фон и все окружающие объекты должны двигаться в противоположном направлении.

Моя мысль о том, как это сделать, заключается в создании массива со ссылками на все объекты в среде. Затем они будут зациклены, и их положение изменится в направлении, противоположном движению корабля.

Однако я боюсь, что это не будет выглядеть гладко или будет слишком медленно. Это, вероятно, вызовет «заикание»? В связи с этим, прежде чем я начну разрабатывать такую ​​систему, я хотел бы знать, есть ли лучшие варианты или кто-то знает, что я хочу сделать.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 29 июня 2009

нет, это наиболее эффективный подход ... и скрыть все элементы, которые не отображаются на экране, чтобы сохранить производительность ... если эти объекты только перемещаются, чем вы должны рассмотреть flash.display.DisplayObject :: cacheAsBitmap , для лучшей производительности ...

альтернативой будет поместить все предметы в один Спрайт, замаскировать его, а затем передвигаться вокруг Спрайта ... это будет работать правильно только в том случае, если ваш мир ограничен ... и будет работать нормально только в том случае, если маленький ... так что я думаю, это не вариант ...

Greetz

back2dos

0 голосов
/ 02 июля 2009

Поскольку это многопользовательская игра, подход Бранден-Холла гораздо больше подходит для ваших нужд, так как вы можете легко отправлять уведомления о существовании другого корабля в окружении игрока (это лучше, чем давать пользователю информацию обо всех неэкранные элементы их окружения) Я просто добавлю, что, в зависимости от размера вашего видового экрана, количество квадрантов на экране может изменяться, вы всегда должны проверять границы вашего текущего квадранта, чтобы увидеть, отображаются ли соседние квадранты на видовой экран.

0 голосов
/ 29 июня 2009

Что ж, вам нужно будет отслеживать все объекты, но вам нужно всего лишь беспокоиться о небольшом их количестве в любой момент времени.

Один из простых способов сделать это - разделить игровую зону на сетку квадрантов (сколько вы в итоге будете использовать, будет зависеть от вас). Один квадрант может содержать несколько различных элементов отображения. Тогда вам просто нужно выяснить, на какой площади находится ваш корабль. Отсюда вы можете определить минимальное количество квадрантов, которое вам нужно сканировать, чтобы нарисовать область вокруг корабля.

Когда элементы перемещаются по игровой зоне, вам просто нужно постоянно обновлять, в каком квадранте они находятся.

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