Elite Games - Свобода среди звезд!

Уроки для программистов - Использование кривых

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

Время работы: 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 уже ставим конечный результат.
ZEUStiger
К началу раздела | Наверх страницы Сообщить об ошибке
Уроки для программистов - Использование кривых
Все документы раздела: Для тех, кто хочет писать игры | Движок на OpenGL | Создание игр в Game Maker | Bump mapping | Использование Direct Input | XNA framework |


Дизайн Elite Games V5 beta.18
EGM Elite Games Manager v5.17 02.05.2010