Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.09.2015, 21:16
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 1  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Алгоритм миникарты

Всем привет. Возник вопрос по созданию мини карты, точнее каков должен быть её алгоритм? Как синхронизировать скорость передвижения по глобальной карте и отобразить пройденное(уменьшенное расстояние) на мини карте?

Старый 12.09.2015, 22:09
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Вам MVC ни о чём не говорит?

Model. Данные об объектах на карте, игроке на карте и т.д.
View1. Сама карта.
View2. Мини-карта. Можно не показывать объекты на карте, можно не показывать игрока на карте, можно сделать это настраиваемым по клику по вьюшке.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 12.09.2015 в 22:27.
Старый 12.09.2015, 22:25
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 3  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Говорит, но причем здесь это?

Старый 12.09.2015, 22:30
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Сама суть паттерна в том, что есть модель, а есть вьюшки, и их может быть неограниченное количество.
Модель представляет из себя базу данных, а вьюшки отображают данные визуально, и могут использовать при этом разные меры расстояния и спрайты.
__________________
There is no thing in this world that is not simple.

Старый 12.09.2015, 23:25
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 5  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Я так понимаю, нужно сгенерировать вторую карту, убрать к примеру в ней объекты, но оставить игрока, уменьшить до нужного размера контейнер этой самой карты. Но вопрос в том, что движение персонажа к примеру будет 5 пикселей за шаг и если на мини карте будет шаг персонажа в 5 пикселей её перекинет за маску.

Старый 12.09.2015, 23:40
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 6  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
найди соотношение карты и мини карты и на мини карте тоже двигай мини карту, а не персонажа, главное найди соотношение и всё будет норм

Старый 13.09.2015, 00:31
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 7  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Godwarlock, если вас манит сделать именно так, то пожалуйста.
scaleX/scaleY, базисные оси тоже скейлятся, так что не переживайте за 5 пикселей.

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

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

Виды не должны ничего знать друг о друге.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 13.09.2015 в 00:42.
Старый 13.09.2015, 01:28
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 8  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
А где тогда логика проводится?

Старый 13.09.2015, 09:59
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Обычно в контроллере, но есть и другие подвиды шаблона, где логика находится в модели.
__________________
There is no thing in this world that is not simple.

Старый 13.09.2015, 10:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Что-то я не понял каким боком сюда MVC относится вообще)
Ну, разве что передавать данные о положении карты и персонажа модели, а модель будет рассылать всем вьюшкам.
Но как я понял, вопрос то не в этом, а в том как вообще сделать мини карту, и чтобы персонаж на ней так же пропорционально располагался как и на большой.

Код для рассчета расстояний будет примерно таким. Допустим масштаб 1:20
Берем большую карту, и создаем на ее основе маленькую превьюшку

Код AS3:
// перед созданием превью надо скрыть всех персонажей и прочие игровые объекты с карты, допустим сделать сеттер hideGameObjects
map.hideGameObjects = true;
var scale:Number= 20;
var previewWidth:int = map.width / scale;
var previewHeight:int = map.height / scale;
var preview:Bitmap = new Bitmap(new BitmapData(previewWidth, previewHeight, true, 0x000000));
var mapX:int = map.x;
var mapY:int = map.y;
var mapScale:Number = map.scaleX;
map.scaleX /= scale; 
map.scaleY = map.scaleX;
map.x = map.y = 0;
preview.bitmapData.draw(map, map.transform.matrix);
// возвращаем как было
map.x = mapX;
map.y = mapY;
map.scaleX = map.scaleY = mapScale;
// дальше ложим эту привьюшку в свой контейнер
previewContainer.addChild(preview);
// ну и, собственно рассчитываем положение персонажа в ней, тоже деля его на глобальный масштаб
// допустим данные о положении карты и персонажа присылает в это мини превью модель
preview.x = mapPositionX / scale;
preview.y = mapPositionY / scale;
// ну и так же для персонажа

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.