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

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

 

Динамические объекты могут быть нарисованы как тайлами (тайлсеты 511 и 512), так и спрайтами (тайлсет с номером 513), причем спрайтами могут быть нарисованы только динамические объекты. Попытка нарисовать спрайтами статический объект может привести к зависанию движка. Будьте внимательны.


 

 

Вызов скриптов

 

Основное предназначение динамических объектов - это взаимодействие с игроком и выполнение скриптов.

За это отвечают поля: Collider, Class и User1

  • User1 Хранит номер скрипта, который должен быть выполнен при взаимодействии с объектом. Если в User1 записан "0", то скрипты не будет выполняться.
  • Collider Отвечает за обработку столкновений. Если в этом поле указать call handler, то при столкновении Диззи с этим объектом будет выполнен установленный в user1 скрипт. Следует помнить, что коллизии с динамическими объектами производятся не по маске, как с поверхностью, а целыми прямоугольными областями. т.е. вполне могут возникнуть ситуации, когда зрительно игрок не касается объекта, а физически, столкновение между прямоугольными областями объекта и персонажа уже произошло.
  • Class Важное свойство объекта, которое отвечает за его тип поведения. Может принимать значения:
    1. none      при нажатии на объект ни чего не будет происходить
    2. action     при нажатии на объект будет выполнен скрипт, который был указан в user0. После выполнения скрипта, если в переменной RET не было записано значение NO_INVENTORY на экран будет выведен инвентарь. Если в инвентаре выбрать какой-либо предмет, то скрипт, привязанный к объекту, будет выполнен повторно, но уже в переменной RET будет храниться ID выбранного предмета.
    3. item     превращает динамический объект в переносимый предмет со всеми вытекающими. см. переносимые предметы
    4. coin     при активации ни какие скрипты не выполняются, но увеличивается счетчик монет
    5. life     при активации ни какие скрипты не выполняются, но увеличивается счетчик жизней. Жизней у игрока может быть больше трех.

 

При взаимодействии

Более подробно о скриптах смотри в разделе скриптовый язык.

 

 

Анимация

 

Любые динамические объекты, кроме переносимых предметов, могут быть анимированы.

Анимации в DizzySE зациклены. т.е. после последнего кадра идет 1-й, а не предпоследний.

За это отвечают следующие поля: Frame, Delay, Anim и Target.


  • Anim     включает анимацию. Для начала работы анимации в поле anim должно стоять значение play.
  • Frame      хранит текущий кадр анимации.
  • Delay     отвечает задержку перед сменой кадров.
  • Target      хранит количество кадров анимации.

 

Более подробно о том как настраивать анимацию.

Все кадры анимации должны храниться в основном тайлсете и быть расположены подряд.

В редакторе DizzyAge нужно использовать первый кадр из последовательности, иначе анимация будет захватывать последующие тайлы.

 

Пример. На рисунке ниже изображена часть тайлсета с тремя анимациями. Допустим мы хотим нарисовать жизнь.

выбираем первое яйцо и рисуем динамический объект этой кистью.

Поле Anim устанавливаем в play

Анимация содержит 6 кадров, поэтому в поле Target пишем 6

В поле Frame пишем любое число от 0 до 5

В поле Delay пишем любое число от 0 и до 255, но разумным было бы использовать что-нибудь от 0 до 9-ти. Чтобы анимация не была слишком быстрой и слишком медленной, пишем 3.

 

В итоге в игре на месте этой кисти будет скачущее яйцо.

 

 

Это относится к тайловым динамическим объектам. Спрайтовые объекты ведут себя несколько иначе. На рисунке выше можно увидеть разделение спрайтсета на части, а так же номера этих частей. При анимации спрайтового объекта анимация делается не сдвигом вправо по тайлсету, а увеличением номера спрайта. т.е. если делать анимированную птицу, то нужно рисовать её спрайтом №5, тогда следующий кадр будет иметь №6. Однако, если рисовать её спрайтом №6, то следующий кадр №7 иметь другой размер и красивой анимации не получится.


 

Движение

 

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

 

Под эти нужды задействованы следующие поля:


  • User2 - тип движения
  • User3 - Направление по горизонтали
  • User4 - Направление по вертикали
  • Status - Скорость

 

Сразу оговоримся, что скорость - это смещение объекта в пикселях за один игровой кадр. т.е. при скорости 3, за каждый кадр объект будет смещаться на 3 пикселя.

 

Направление движения может принимать три значения:


  • 0 - объект не двигается в этой плоскости
  • 1 - движение вперед. Вперед - это вниз или вправо.
  • 2 - движение назад. Назад - это вверх или влево.

 

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

Любое движение идет до тех пор, пока объект не упрется в область с каким-нибудь материалом. После чего он меняет свое направление.

 

Тип движения может иметь 6 разных значений.


0 - движения нет

1 - "туда - обратно" - самый простой тип движения. Объект движется вперед со скоростью Speed до тех пор, пока не упрется в любой материал, либо пока не достигнет края экрана. Затем он меняет направление и движется обратно с теми же условиями.

2 - "Паук" - Условия движения аналогичны типу 1, однако движение вперед происходит с двойной скоростью speed, а обратно с обычной.

3 - "Капля" - Применяется только при вертикальном движении. Объект движется вперед с обычными условиями, но вместо движения обратно объект появляется под потолком либо под каким либо материалом, который находится непосредственно над ним. Затем объект снова начинает двигаться вперед.
Если в редакторе DizzyAge указать как стартовое движение обратно, то объект сразу начнет "искать" потолок.

4 - "туда - обратно с анимацией". Условия движения такие же, как и в других типах перемещения во всем, за исключением одного. При движении в обратном направлении объект рисуется кадром с номером больше на единицу. н.р. при движении вперед объект имеет спрайт №0 и выглядит как паук, значит при движении обратно он будет иметь номер спрайта №1 и будет выглядеть как паук с другим положением лапок.

5 - "вызов скрипта" - Объект движется по прямой, пока не упрется в твердый материал. После этого объект выключается, а так же если к объекту был прикреплен скрипт, происходит его вызов. В переменную ACT в этом случае записывается значение ACT_STOPED. Пожалуй, этот тип перемещения наиболее интересный и универсальный. Умело применяя комбинации скриптовых обработок и этого типа перемещения, можно реализовать практически что угодно: начиная от отравленных стрел или летучих мышей, движущихся по сложным траекториям и заканчивая таймерами для отложенного вызова какого-либо действия.

 

 

 

Динамические объекты??

1

Тип объекта

1. Тип объекта

2

ID объекта

2. ID объекта

3

Задержка анимации

3. Задержка анимации

4

Состояние анимации (вкл/выкл)

4. Состояние анимации (вкл/выкл)

5

Тип действия при столкновении

5. Тип действия при столкновении

6

Класс объекта

6. Класс объекта

7

Скорость движения объекта

7. Скорость движения объекта

8

Количество кадров в анимации

8. Количество кадров в анимации

9

Текущий кадр анимации

9. Текущий кадр анимации

10

Номер скрипта или название предмета

10. Номер скрипта или название предмета

11

Тип движения

11. Тип движения

12

Направление движения по горизонтали

12. Направление движения по горизонтали

13

Направление движения по вертикали

13. Направление движения по вертикали

Created with the Personal Edition of HelpNDoc: Free HTML Help documentation generator