![]() |
Алгоритм миникарты
Всем привет. Возник вопрос по созданию мини карты, точнее каков должен быть её алгоритм? Как синхронизировать скорость передвижения по глобальной карте и отобразить пройденное(уменьшенное расстояние) на мини карте?
|
Вам MVC ни о чём не говорит?
Model. Данные об объектах на карте, игроке на карте и т.д. View1. Сама карта. View2. Мини-карта. Можно не показывать объекты на карте, можно не показывать игрока на карте, можно сделать это настраиваемым по клику по вьюшке. |
Говорит, но причем здесь это?
|
Сама суть паттерна в том, что есть модель, а есть вьюшки, и их может быть неограниченное количество.
Модель представляет из себя базу данных, а вьюшки отображают данные визуально, и могут использовать при этом разные меры расстояния и спрайты. |
Я так понимаю, нужно сгенерировать вторую карту, убрать к примеру в ней объекты, но оставить игрока, уменьшить до нужного размера контейнер этой самой карты. Но вопрос в том, что движение персонажа к примеру будет 5 пикселей за шаг и если на мини карте будет шаг персонажа в 5 пикселей её перекинет за маску.
|
найди соотношение карты и мини карты и на мини карте тоже двигай мини карту, а не персонажа, главное найди соотношение и всё будет норм
|
Godwarlock, если вас манит сделать именно так, то пожалуйста.
scaleX/scaleY, базисные оси тоже скейлятся, так что не переживайте за 5 пикселей. Другой вопрос того, что это некрасиво, но если срочно надо, то и так сойдёт. А если есть время разобраться - попробуйте паттерны с моделью и вьюшкой. Это отделение логики с данными от вида. Есть модель, которая хранит положения игроков и объектов и размеры карты. Есть основной вид-карта, есть миникарта-дополнительный вид. Обе берут данные об объектах из модели, и подписаны на события её изменения. Модель при этом не хранит никакого экранного контента, чисто данные местоположения, к примеру, и названия айтемов. Основной вид слушает события ввода и оповещает контроллер, а тот в свою очередь дёргает модель, а та диспатчит об изменении, и оба вида получают событие, что модель изменилась и обновляются. Виды не должны ничего знать друг о друге. |
А где тогда логика проводится?
|
Обычно в контроллере, но есть и другие подвиды шаблона, где логика находится в модели.
http://cs624828.vk.me/v624828630/4464c/CBhX54Udbqs.jpg |
Что-то я не понял каким боком сюда MVC относится вообще)
Ну, разве что передавать данные о положении карты и персонажа модели, а модель будет рассылать всем вьюшкам. Но как я понял, вопрос то не в этом, а в том как вообще сделать мини карту, и чтобы персонаж на ней так же пропорционально располагался как и на большой. Код для рассчета расстояний будет примерно таким. Допустим масштаб 1:20 Берем большую карту, и создаем на ее основе маленькую превьюшку Код AS3:
|
| Часовой пояс GMT +4, время: 13:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.