Тема: scripted_sequence (энтити) Ключевые слова: управление NPC, анимация, контроль над NPC, заставить NPC выполнить действие См. также: logic_choreographed_scene, Сложные скриптовые сцены (choreographed scenes) в редакторе FacePoser
Предназначена для управления NPC - заставляет их выполнять определенные анимации. NPC можно
заставить сначала переместиться в позицию scripted_sequence, а потом выполнить нужную
анимацию, либо NPC выполнит анимацию, не подходя к scripted_sequence. Во время действия данной энтити искусственный интеллект подконтрольного NPC подавляется. Если нескольким scripted_sequence задать одно и то же имя, это вынудит подконтрольных NPC одновременно начать выполнять свои анимации, как только все они подойдут к соответствующим scripted_sequence. Эту особенность можно использовать для изображения сцен с взаимодействующими NPC. При этом не забудьте задать атрибут Pre Action Idle Animation (иначе NPC во время ожидания могут выполнять произвольные бессмысленные анимации). Порядок работы энтити (действий подконтрольного NPC):
Замечание: некоторые анимации начинаются (или заканчиваются) с задержкой (около 1 сек), когда подконтрольный NPC должен подойти к scripted_sequence. Однако те же анимации выполняются без задержки, когда назначаются в Post Action Idle Animation. Если Вас не устраивает данная особенность энтити scripted_sequence, придется отказаться от ее использования в пользу logic_choreographed_scene и редактора Face Poser (в редакторе можно более тонко настроить анимацию NPC). Замечание: возможны случаи, когда анимация NPC, заданная одним из атрибутов-анимацией, по какой-либо причине не выполняется. Если Вы уверены, что все сделали правильно, попробуйте задать те же значения для других атрибутов-анимаций (см. ниже атрибуты - имена анимаций). Например, если не срабатывает Action Animation, попробуйте Post Action Idle Animation (см. также флаг Loop in Post Idle - играет ту же роль, что и атрибут Loop Action Animation? для атрибута-анимации Action Animation). Атрибуты (Keyvalues) Name имя, используемое для ссылки на данный объект.Parent <имя энтити> имя родительской энтити (параметр Name), с которой данная энтити будет "связана". При этом движение, ориентация в пространстве и жизнь данной энтити (дочерней) будут зависеть от родительской энтити.Pitch Yaw Roll (Y Z X) <pitch yaw roll> ориентация энтити в пространстве (параметры означают соответствующие углы поворота вокруг осей Y, Z и X).Target NPC <список энтити> имя подконтрольного NPC или класса NPC (например, npc_citizen).Pre Action Idle Animation <строка> имя анимации (например "idle01") или активности (например "ACT_IDLE"), проигрываемой до начала активизации энтити, если NPC вынужден ждать события OnBeginSequence (см. выше). Атрибут используется, если установлен флаг Start on Spawn, либо энтити дана управляющая команда MoveToPosition, либо подконтрольный NPC будет ожидать других (см. выше).Entry Animation <строка> имя анимации (например "reload02") или активности (например "ACT_RELOAD"), проигрываемой в начале активизации энтити, до перехода к основной анимации (см. ниже). Добавлено в Half-Life 2: Episode 1.Action Animation <строка> имя основной анимации (например "reload02") или активности (например "ACT_RELOAD"). Если NPC должен выполнить только одну анимацию, она задается именно этим атрибутом.Post Action Idle Animation <строка> имя анимации (например "idle01") или активности (например "ACT_IDLE"), проигрываемой после основной анимации. Атрибут используется, если задать одинаковое имя нескольким scripted_sequence (см. выше про одновременное выполнение анимаций).Custom Move Animation <строка> используется совместно с установленным значением Custom movement атрибута Move to Position и определяет анимацию (например "crouch_run01") или активность (например "ACT_RUN"), которая будет использоваться во время передвижения подконтрольного NPC к энтити scripted_sequence.Loop Action Animation? <список значений Yes/No> определяет зацикливание основной анимации (см. выше). Добавлено в Half-Life 2: Episode 1.Synch Post Idles? <список значений Yes/No> предположительно определяет одновременное завершение анимаций Post Action Idle Animation несколькими NPC и используется в сценах взаимодействия NPC (см. выше описание и порядок работы scripted_sequence). Добавлено в Half-Life 2: Episode 1.Search Radius (0=everywhere) <число с п.точкой> радиус для поиска подконтрольных NPC (в основном используется, если атрибут Target NPC задает класс NPC). Значение 0 задает поиск NPC на всей карте.Repeat Rate ms <число с п.точкой> назначение неизвестно. На данный момент изменение параметра не оказывает видимого влияния на работу энтити.Move to Position <список значений> задает способ передвижения подконтрольного NPC к энтити scripted_sequence.Next Script <список энтити> имя следующей энтити scripted_sequence, которая будет активизирована сразу после окончания действия текущей. Между этими двумя энтити контроль над целевым NPC не утрачивается (т.е. NPC "не отвлекается" от выполнения действий).Minimum DX Level <список> минимальная версия DirectX на компьютере пользователя, при которой энтити будет работать.Maximum DX Level <список> максимальная версия DirectX на компьютере пользователя, при которой энтити будет работать.On player death <список> что происходит, если игрок погибает. Управляющие команды (Inputs) Kill удаляет энтити из игры.KillHierarchy удаляет энтити и все ее дочерние энтити из игры (связанные через Parent).AddOutput <строка> добавляет Input/Output-связку с другой энтити в формате:FireUser1…FireUser4 вызывает срабатывание соответствующих событий OnUser1…OnUser4 для данной энтити.SetParent <строка> изменяет родительскую энтити для данной.SetParentAttachment <строка> изменяет точку "привязки" данной энтити к родительской, если для родительской энтити задана модель с точками привязки (см. в редакторе Model Viewer).SetParentAttachmentMaintainOffset <строка> команда аналогична предыдущей, за исключением того, что данная энтити будет поддерживать положение относительно родительской, бывшее на момент привязки.ClearParent убирает привязку данной энтити к родительской.BeginSequence заставляет подконтрольного NPC начать выполнение анимации.MoveToPosition заставляет подконтрольного NPC идти к позиции scripted_sequence. Во время передвижения NPC выполняет заданную анимацию (см. выше атрибут Move to Position), если анимация не задана - выполняется активность NPC ACT_IDLE. Анимация выполняется до начала основной анимации (событие OnBeginSequence).CancelSequence останавливает выполнение scripted_sequence (и анимации). Если команда дана после начала основной анимации, она игнорируется до тех пор, пока основная анимация не закончится (до события OnEndSequence). События, происходящие с энтити (Outputs) OnUser1…OnUser4 вызываются управляющими командами FireUser1…FireUser4, соответственно.OnBeginSequence происходит в начале выполнения основной анимации (Action Animation).OnEndSequence происходит в конце выполнения основной анимации.OnScriptEvent01…OnScriptEvent08 происходят во время выполнения scripted_sequence, если случается событие 'trigger' anim. Используйте event 1003 framenum 1…8 в *.qc-файле (используется для компиляции модели). На данный момент более подробное описание отсутствует. Флаги (Flags) Repeatable позволяет повторно использовать энтити командой BeginSequence или в замкнутом цикле (когда последняя scripted_sequence ссылается на данную).Leave Corpse назначение флага неизвестно. По-видимому, должен задавать исчезновение убитого NPC в игре.Start on Spawn энтити активизируется сразу после создания в игре. Если при этом задан атрибут Pre Action Idle Animation, подконтрольный NPC будет циклически выполнять указанную анимацию до момента подачи команды BeginSequence (удобно использовать, в частности, для спящих зомби, которые просыпаются при пересечении игроком триггера; именно так устроены префабы npc_zombie_prone и npc_zombie_slump).No Interruptions запрещает прерывание анимации подконтрольного NPC (вызванное, например, стрельбой по нему). Если флаг не установлен, scripted_sequence прекращает свое действие в случае "вмешательства" в ее выполнение.Override AI задает абсолютное подавление искусственного интеллекта подконтрольного NPC (в некоторых случаях без данного флага NPC "выходит из-под контроля").No Script Movement запрещает перемещение в пространстве подконтрольного NPC во время анимации (если оно задано в самой анимации).Loop in Post Idle анимация Post Action Idle Animation будет повторяться бесконечно (соответственно, активность энтити длится до тех пор, пока ей не будет дана команда сброса).Priority Script назначение флага неизвестно. Статьи (рус): Статьи (eng):
Номер статьи: 11
|