Урок 19 - Использование кривых.


ИСПОЛЬЗОВАНИЕ КРИВЫХ

Время работы: 15 мин.
Требуются знания GM`а: средние
Версия GM`а: ?.? – 7.0

Это небольшая инструкция, как можно сгладить анимацию в GM`е. Допустим, нам нужно создать качающиеся деревья. Можно это сделать так:

Сохраняем спрайты:




Создаем объекты tree и helper и назначаем им спрайты tree01 (origin у корня) и helper01 (origin по центру) соответственно.

В <CREATE> к tree пишем:

rot = 0
back = 0

В <STEP>: 

if (back = 0) { rot += 0.5 } else {rot -= 0.5 }
if (rot < -5) { back = 0 }
if (rot > 5) { back = 1 }

image_angle = rot

Закидываем дерево в комнату и запускаем. Результат, мягко говоря, не слишком впечатляющий. Как только дерево наклонилось на 5 градусов от 90 градусов, оно переключает свое движение в иную сторону. В итоге – на качающееся дерево ЭТО не похоже.

Сейчас мы будем «смягчать» повороты с помощью curves. Это слово значит отнюдь не «курва» а «кривая». Поскольку такого понятия, как «кривая» в GM`е нет, то мы его изобретем. А создавать кривые мы будем через path`ы.

Удаляем все скрипты с дерева. Пишем заново: В <CREATE>

rot = 0
icrvobj = instance_create(0,0,helper)
with (icrvobj)
{
path_start(crv01,1,1,true)
}

В <STEP>: 

rot = 4-icrvobj.y/8
image_angle = rot

А теперь создадим путь crv01: (описываю по точкам)

1: (0;0) 
2: (32;0) 
3: (96;64) 
4: (160;64) 
5: (224;0) 
6: (256;0) 

Плюс отключаем closed и включаем smooth curve с precision в 8.

Еще желательно включить в настройках interpolate colors between pixels. А глюк с «прыганьем» rot`а, когда он подходит к 0, я не знаю как решить. Это особенность программы.

Таким образом, мы запускаем объект helper по заданному пути и используем его y координату как наклонение. Почему мы используем лишнюю переменную rot? Как по мне, так лучше экспериментировать с нестандартными переменными, чем со стандартными. Например, нам захочется «присобачить» силу ветра или, например, гравитационные аномалии. Подставляем всё в rot, а в image_angle уже ставим конечный результат.

0 коментарі:

Отправить комментарий

 
Анализ сайта booksrum.blogspot.com Яндекс.Метрика