Последовательность в анимации|Всем привет! С вами wmysterio! Сейчас поговорим детальнее об анимации. Существует целый ряд опоков, связанных с ними, но остановлюсь я на последовательностях или так называемых AS-паках ( action sequences ).|wmysterio|wmysterio||||Перейдём к опкодам.
0615: define_AS_pack_begin $ActSeq // Создаёт начало экшн-пака
0616: define_AS_pack_end $ActSeq // Создаёт конец экшн-пака
Заставить выполнять актёра последовательность анимации можно с помощью опкода:
0618: assign_actor $0@ to_AS_pack $ActSeq
Здесь:
0@ - хендл, актёра
$ActSeq - естественно имя AS-пака
Заставить выполнять последовательность анимации целую группу можно с помощью опкода:
Здесь:
$PLAYER_GROUP - группа, что будет вкалывать :)
$ActSeq - имя AS-пака
Следующий опкод выгружает последовательность:
061B: remove_references_to_AS_pack $ActSeq
Между опкодами "0615" и "0616" пишутся списки анимаций, которые будут выполняться последовательно. Для примера, я взял "3" анимации, которые актёр будет выполнять:
× **Примечание:** нужно именовать актёра именно как -1, так как мы будем передавать указатель актёра опкодом 0618. Если нужно более длительно выполнять анимацию, то пишут время в место -1
В этот список можно указывать анимации с любых IFP-файлов ( даже разных ), главное их загрузить перед процессом выполнения. Перейдём к скриптам. Давайте создадим экшн-пак, и заставим актёра выполнять его:
В результате наш актёр выполняет указанные анимации:
Если вы искали в поисковике опкодов воспроизведение анимации актёра, то наверняка вы сталкивались с сутуацией, когда находило целых три опкода. Вот эти:
Возникают вопросы: Почему? С какой целью разработчики сделали это? В чем разница? Я покопался и интернете и, кажется, нашел ответ: эти версии создавались для различных ситуаций с актёрами и вела себя, соответственно, от состояния актёра.
Версия
Описание
A
Анимация будет останавливаться, когда актёра ударили, выстрелили в него или когда нужно выполнять анимации, запрограммированных в EXE-шнике.
B
Анимация будет проигрываться, в независимо от ситуации. Чаще используется в AS-паках. Вообще все опкоды с приставкой AS используются в основном в последовательностях, причем не только анимационные команды.
C
Позволяет актёру двигаться, выполняя анимацию. Прерывается, когда актёр прыгает, падает, плывёт.
Я, правда, остаюсь верным опкоду "0605" :)
Рассмотрим так же опкоды, которые привлекли моё внимание:
Проверка: "Выполняет ли актёр $PLAYER_ACTOR анимацию 'phone_talk'?".
Заносит в переменную "26@" время выполнения актёром "$PLAYER_ACTOR" анимации "phone_talk".
Здесь:
2@ - дробное число от 0.0 до 1.0. Например, если нам нужно, что бы актёр начал выполнять анимацию не сначала а с середины, то устанавливают анимации прогресс в 0.5.
Пример использования:
Опкод записывает общее время воспроизведения актёром "$PLAYER_ACTOR" анимации "phone_talk" в переменную "23@":
Есть ещё этот:
По-идеи, опкод должен ставить анимацию на паузу и продолжать воспроизведение, однако он у меня как-то неадекватно ведёт себя, а точнее, вообще никакой реакции :) Что-же, урок подошел к концу. Надеюсь мои находки будут для вас новыми и интересными ;)|2170|1|0|64667491png600337400`224``||posledovatelnost_v_animacii|1504463144