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

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

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

Регистрация: Sep 2009
Сообщений: 105
Отправить сообщение для demy с помощью ICQ
По умолчанию Изометрический движок своими руками

Настала необходимость обзавестись изометрическим движком, и вот, решила написать его самостоятельно.
Но тему завела уже не с пустыми руками:
http://mydemy.narod.ru/zfw_iso/index.html
Сейчас дело обстоит так (там кстати есть два бага).

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

Сцена грузится следующим образом.
Создаются слои (спрайты, возможно, уместнее было бы использовать другие объекты из ветки DisplayObject):
- некликабельный, для загрузки фона,
- слой с объектами
На слой с объектами крепятся "гексы" - это пустые спрайты (см. выше), размещенные на точке (0,0).
Почему на начале координат?
Ну, я уже было написала алгоритм сортировки, но задумалась, а почему бы не сделать ячейки-гексы, отсортированные, как надо, на которые мы будем крепить объекты, соответственно, автоматически находящие свое место в сортировке. (Если криво объяснила, могу переформулировать)
Реальные координаты объекта высчитываются отдельно, и спрайт вставляется в гекс с ними (ведь 0 + координата = координата).
Сейчас я вижу проблему этого подхода... Но пока не решилась возвращать сортировку.

Еще я засомневалась и насчет гексов... Первая проблема на данный момент (помимо багов, которые просто не пофиксены в этой версии) - нормальный просчет гекса, на который кликнули. Нет, ну я даже высчитала формулы прямых, образовывающих верхний и нижний углы гекса. Исходя из этого, мы можем высчитать, лежат ли (mouseX, mouseY) выше/ниже, и, соответственно, более точно рассчитать, по какому гексу кликнули мышкой... Но что-то многовато действий, для простой проверки клика...
Почему я вообще выбрала гексы? Ну, они необычные... Да, при движении вертикально вверх, персонаж люто, простите, "виляет попой". Но направления движения в остальном какие-то... естественные, и все не такое рубленное, что ли. Может, это просто мой женский мозг взбунтовался против очевидно более простого решения...
А еще гексами можно образовать сетку, не наклоненную под углом 45 градусов, а прямоугольную, как сам экран. И не надо придумывать, чем занимать углы, или как объяснять "туман войны".

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


Последний раз редактировалось demy; 10.11.2011 в 15:20.
Создать новую тему   Часовой пояс GMT +4, время: 09:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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