на главную почта поиск
 
поиск
Диона Холдинг
   
   
FLASH-версия 
 Версия для печати 
  Новости
 

   
Новости  
   

Глава 19. Скроллинг в изометрии

Скроллинг в изометрии ничем не отличается от скроллинга в нормальной проекции. С очень небольшими усилиями комбинируем движок скроллинга (глава 13) с изометрией (глава 16). Результатом станет просто потрясающий вид движения карты.

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

Исходный код и клипы можно загрузить отсюда.

Изометрия прекрасно выглядит на экране, но это не алмазы. Да, брилианты – лучшие друзья девушек, и я ничего не имею против них (брилиантов) персонально, только ваш монитор не брилиант (а может, если у кого-то так, то пришлите фотку). Ваша игра была бы прекрасна и в нормальной проекции. Действительно, можно создать больше плиток, чтобы улучшить изображение пространства игры, значительно увеличить пространство игры.

На картинке все будет замечательно, но за все надо платить. Большое число плиток на карте потребует более мощный компьютер. Если вам хочется навести красоту при небольшом пространстве игры, то включите в игру скроллинг в изометрии.

Отдыхаем и пойдем дальше.

Шаблон лучше прямоугольника

Можно сделать многофункциональную игру и вложить в нее много ума и сил, но само изображение плиток относится больше к искусству. Посмотрите на пример плиток, двигающихся на сером фоне. (Здесь только картинка, никакого кода нет! Код есть в оригинале. Прошу прощения.)

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

Есть один горизонтальный ряд (на самом деле их 2) плиток (помечены голубыми точками) и один вертикальный ряд (красные точки), плитки находятся на границе видимой области (практически не видимы) и, если мы их перемести, то ничего не изменится.

Чтобы обеспечить легкость переноса плиток, будем создавать объекты плиток с сохранением информации о ее местоположении. Когда строится карта, то начинаем с плитки в центре (где стоит Герой) и ей присваивается имя "t_0_0" независимо от того, где на самом деле стоит Герой.

if(y%2!=0){

var noisox = x*game.tileW*2+game.tileW+ob.xiso;
}else{

var noisox = x*game.tileW*2+ob.xiso;
}

var noisoy = y*game.tileW/2+ob.yiso;

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

var ytile = ((2*noisoy-noisox)/2);
var xtile = (noisox+ytile);
ytile = Math.round(ytile/game.tileW);
xtile = Math.round(xtile/game.tileW);

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

Для перемещения строк и столбцов плиток на экране с помощью функции changeTile, используем тот же метод: перемещаем плитку в новую позицию, определяем возможность ее показа, создаем объект и удаляем старый.

ДВА предупреждения.

ПЕРВОЕ, - т.к. мы использовали другой клип для проходных плиток, чтобы устранить проблемы с уровнем клипа (game.clip.back), возможно новое положение перемещенной плитки – будет «непроходная». Тогда нужно удалить старый иклип и пристраивать новый в game.clip. Учтем это, сохраняя родительский клип плитки объекта no_iso и сравнивая его позже с клипом в новой позици плитки.

ВТОРОЕ, Flash очень не любит отрицательные уровни для клипа (здесь можно прочитать больше об этом на английском языке). Клипы плиток могут размещаться с отрицательным уровнем, но пропадает возможость их (клипы, конечно) удаления позднее. Некоторые наши плитки лежат на уровне -3456. Чтобы разрешить эту проблему, везде добавляем +100000 при вычислении уровня размещения клипа (Герою тоже достанется, не забывайте про него).

Можно загрузить исходный код и клипы отсюда.

Есть вопросы - пишите мне на semikin@dionaholding.ru

Читаем дальше - Глава 20. Повороты - развороты

Возвращаемся на Начало учебника

 

Всего: 5

Электронные формы от Adobe

14 ноября с.г. компания представила новую версию всем известного средства Adobe Acrobat. 8-ая по счету версия принесла новые возможности по переходу от бумажных документов к электронным.
читать
 

АрмПарк - Универсальная учетная система

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

Программирование игр на основе плиток

Представляется перевод замечательного учебника по созданию движка игры на основе плиток (Tile Based Games). Я благодарен автору Tonypa за разрешение публикации перевода. Если у Вас возникают вопросы, пишите и я постараюсь Вам помочь.
читать
 

Универсальная информационная система-конструктор Учет документов (Доклад на конференции).

Доклад на Третьей практической конференции по Электронному Документообороту - "Программа "Учет документов" ", 9 декабря, Москва, Мэрия Москвы.
читать
 

Интеграция систем с использованием новых технологий

Один из ключевых моментов совершенствования электронного бизнеса - это повышение гибкости процессов за счет ускорения реализации решений в области интеграции.
читать
Всего: 5

Rambler's Top100

   
   

новости

продукты

решения

услуги

о компании

   
   
125315, Москва, Часовая ул., д.30
Телефон: (095)797-32-82; Факс: (095)797-32-81
© 2005 ООО "Диона Холдинг"
Администратор: admin@dionaholding.ru