Создание анимации с Animated Mover

Приветствую! Сегодня я разберу создание простой анимации с помощью Animated Mover.
Для начала нам нужно сделать объект, который будем двигать. Обратите внимание, что создавать наш предмет мы должны из Static Model, если же будем использовать Simple Model, анимация работать не будет. Вытаскиваем наш Static Model на карту из Geometry, далее создаем саму дверь: двойной клик по «зеленому кубику», далее в Mesh Editor создаем наш объект (думаю, описывать создание кубической формы и ее текстурирование не стоит).
Затем из Tools вытаскиваем наш Animated Mover и ставим его к нашему объекту.

Далее нажимаем на наш предмет, выбираем Entity, находим в самом низу строку Parent. Кликаем по none в этой строке, далее зажав Ctrl+Alt кликаем по Animated Mover. Теперь, если мы будем двигать mover, то объект будет следовать за ним.

Жмем по mover, выбираем Animation Editor. Внизу видим строку с 3мя none. Кликаем по первому – Actions – Create new animset.

В появившемся окошке ничего не изменяем жмем OK. Далее проделываем тоже самое со вторым nonе, только вместо create new animset будет Create animation. В появившемся окошке можем придумать название для своей анимации, но лучше его запомнить, т.к. оно понадобится в скрипте. Ну и в третьем none снова делаем тоже самое, только у нас уже будет Manage Envelope(s). В появившемся окошке жмем галочку рядом с AnimatedMover, и нажимаем OK. В центре mover’a должна появится серенькая точка. Ничего не трогая жмем Enter, в верхней строке должен быть 0. И нажимаем ОК. Серенькая точка сменила цвет на красный. Далее зажимаем Ctrl и двигаем нашу дверь в нужное нам место. Как только передвинули, жмите Enter, но вместо 0 ставим 30 – количество кадров, на которых объект достигнет нужного места. Теперь можем проиграть нашу анимацию с помощью трех кнопок: назад, пауза, вперед (расположены рядом с бывшими none). Если анимация слишком быстрая\медленная можем изменить скорость: заходим в Animation, находим строку SecPerFrame (кол-во кадров в сек.) и подбираем нужное нам числовое значение. Рядом с тремя кнопками проигрывания находится надпись: Frame (кадр) 30 [1 sec] (время). Выбираем наш последний кадр 30.

С обычной скоростью дверь достигнет места за 1 сек. Слишком быстро. Я подберу значение для того чтобы дверь двигалась ровно 3 сек, т.к. редактор имеет 4 звука каменных дверей: 1й на 1 сек, 2й на 2 сек и т.д. Это надо для того чтобы дверь не заканчивала движение раньше или позже выбранного нами звука.

Заранее приготовим действие, после которого будет двигаться наш объект, т.е. это может быть прохождение через Detector Area, нажатие рычажка и т.д. Я разберу последнее. Находим официальные модельки рычага, у него уже есть анимация использования. Также следует взять Static Model на модель рычага. Теперь найдем звуки для наших рычага и объекта. Из Effects вытаскиваем три Static Sound, ставим два около двери и один около рычага. Далее нажимаем на саунд около рычага, заходим в Entity – Sound – none – Browse. Берем свой звук или берем официальные (путь в последнем скрине). К нашему рычагу подбераем звук 1 sec. К двери я подберу звук 3 sec (о длине анимации и звуке я говорил выше). И последний саунд около двери: звук закрытия. Далее во всех трех саундах убераем галочку около AutoPlay, иначе они будут воспроизводится самостоятельно. В строке Controlled from script (контроль через скрипт) жмем на Not controlled… И выбираем Game Scripting (проделать такое со всеми саундами, иначе не будут воспроизводится). Теперь создаем скрипт. Вытаскиваем его из Logic. Кликаем по нему два раза.
В скобках будет описание команды.
Switch – рычаг
Cube – Animated Mover
SoundSwitch – звук рычага
SoundDoor – звук двери
SoundStopDoor – звук остановки двери.
(В места этих строк мы должны выделить наши объекты соответственно. Ctrl+Shift+Alt зажимаем и тянем наш предмет на соответсвенные названия в скрипте.
Пишем:

Switch:EnableUsage() (Означает возможность использования рычага)
RunHandled(
function()
WaitForever()
end,
On(Event(Switch.Used)), (Когда рычаг использован)
function()
Switch:PlayAnimStay(«On») (проигрывание анимации рычага)
SoundSwitch:PlayOnce() (проигрывание звука рычага)
SignalEvent(«Switch_activated»)
Cube:PlayAnimWait(«Default») (проигрывание анимации нашего объекта. Где Default название анимации)
SoundDoor:PlayOnce() (проигрывание звука двери)
Wait(Delay(3)) (через 3 секунды – длительность звука двери)
SoundStopDoor:PlayOnce() (проигрывание звука окончания движения двери)
end)

Теперь можем протестировать получившееся.

Добавить комментарий