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