Объект ТilеdВасkgrоund (иконка с 9 зелеными кубиками) - вещь в Конструкте просто незаменимая. Представляет собой полностью бесшовную картинку, которая работает с текстурами начиная с размеров 1х1 и далее. Применяется в основном для моделирования различных поверхностей и некоторых объектов и простых статических теней. Например, нам нужно поставить в ряд 8 ящиков размером 32х32 и применить функцию Sоlid. Если делать это спрайтом  есть 2 варианта:
1) отдельно создать 8 копий ящика и наложить на все функцию Sоlid. Итого 8 объектов по 32х32.
2) создать один длинный спрайт состоящий из 8 ящиков и применить к нему Sоlid. Итого 1 объект размером 256х32.
С точки зрения производительности оба варианта не слишком оптимальны: первый хотя и не создает новых объектов, но задает множественные координаты копий, которые учитываются как самостоятельные отдельные объекты. Второй же вариант непомерно расходует столь драгоценную видеопамять. А если объектов не 8, а целая 1000? Тут на помощь приходят тайлы. Поместив одно изображение 32х32 в редактор, на лайауте его можно множественно продублировать и растянуть до нужных размеров и количества объектов. При этом он займет видеопамяти ровно столько же, сколько занимает исходный спрайт 32х32. К сожалению у этой технологии, воссозданной в Конструкте, помимо преимуществ, также существует и ряд недостатков:
1) тайлы нельзя анимировать
2) тайлы некорректно работают с бампмеппингом
3) тайлы нельзя повернуть и з за отсутствия в них центра, что ставит их применение под вопрос в изометрических играх. Стоит упомянуть также и пару отличий тайла от спрайта по механизму их использования:
1) спрайт имеет центр и его размер изменяется именно относительно центра. Допустим если вы уменьшите одну сторону спрайта, параллельная сторона также уменьшится. С тайлом все наоборот: не имея центра они изменяют свой размер только относительно левого верхнего угла изображения - принцип у них состоит не в сжатии, а в обрезании и ограничении области видимого объекта. Т.е. к примеру создадим круг 128х128 отдельно в спрайте и отдельно в тайле. Вроде одинаковые круги, ничего особенного. А теперь возьмите и в графе Cоmmоn этих двух объектов измените параметры их высоты и длинны со 128 до 64. Теперь разници очевидна: спрайт изменил масштаб круга и стал меньше, а тайл обрезал все пиксели круга не попавшие в область 64х64 и у нас полулась четверть большой окружности.
2) При перемещении спрайтов и тайлов их указанные координаты перемещений разнятся. Например, когда мы перемещаем спрайт под точками Х и Y мы задаем координаты перемещения центра спрайта. Когда же мы перемещаем тайл под точками Х и Y мы задаем координаты перемещения верхнего левого угла тайла, тот же принцип работает и с хот-поинтами.
3) Тайлы поддерживает мульти-спавн по границам при коллизии (прикосновении) с другими объектами, спрайты же спавнят объекты только из  своего центра или хот-поинтов. Расскажу попоробнее. Допустим есть стена (тайл), бочка (спрайт) и пуля (тоже спрайт). Делаем действие, чтоб при касании с пулей со стены и бочки выделялись партикли: со стены - сыпалась штукатурка, а с бочки - искры. Но в действительности все немного иначе получается: со стеной все нормально, а вот в бочке искры летят только из середины, игнорируя конкретные точки попадания. Я намеренно привел неправильный пример, чтоб показать еще одно отличие спрайтов и тайлов. Для правильного построения сцены требуется совсем немного: указать в действии чтоб каждый партикл выделялся при попадании не из стены и не из бочки, а из... пули! Да, именно так. Надо только прописать, что при попадании в стену из пули спавнится штукатурка, а при попадании в бочку из пули спавнятся искры, и все. Визуально вы не заметите разницы, но теперь все станет на свои места: все будет вылетать и сыпаться именно из тех точек, в которые вы попали. Удачного  КОНСТРУКТИНГА!  :flag:

Отредактировано Hanzo (2009-09-11 22:40:50)