Система алгоритмизации движения снарядов имеет много общего с принципами работы видеоредактора. Пользователь может последовательно соединить до пяти фаз движения, при необходимости используя на стыке фаз наложение. На каждой фазе можно добавить дополнительные элементы движения, так же как на видеопоток можно наложить дополнительные видеоэффекты.
Обычно процедуры используются для конфигурации полета снарядов, но их также можно применить для конфигурации прыжка головореза или анимации щупальца ползучего плеточника при атаке.
Направляющая – это главный элемент процедуры движения. Она может быть четырех видов:
Преследующая - Заставляет снаряд преследовать цель в трехмерном пространстве, как самонаводящаяся ракета.
Баллистическая - Направляет снаряд по стандартной параболической траектории, задаваемой совокупностью физических параметров.
Параболическая - Направляет снаряд по фиксированной параболической траектории, игнорируя ускорение и прочие физические параметры.
Линейная - Направляет снаряд по прямой в выбранном направлении.
Дополнительные элементы изменяют движение снаряда, при этом не влияя на направляющую. Пользователь может добавить до двух различных дополнительных элементов к каждой направляющей: например, синусоидальное колебание вокруг горизонтальной и вертикальной оси.
Еще раз подчеркнем, что направляющая снаряда после добавления дополнительных эффектов не меняется. Другими словами, снаряд, преследующий цель, в конце своего пути столкнется с ней, даже если в процессе следования он описывал вокруг направляющей синусоиду.
Существует три типа дополнительных элементов:
Волна - Движение вдоль направляющей по синусоиде.
Спираль - Движение вокруг направляющей по спирали.
Кружение - Похож на элемент типа «Спираль», но в данном случае снаряд не всегда следует направдяющей – направление вращения задается параметрами начала движения, и в зависимости от воздействующих сил снаряд может в какой-то момент замедлиться и начать спиральное движение в другом направлении.
Запуск окончания фазы движения контролируется параметром «Выход». В этом параметре фиксируется длина «пройденного пути» (отсчитываемого от точки начала движения) или «оставшегося пути» (отсчитываемого от точки окончания движения), необходимая для запуска окончания фазы. В первом случае параметр «Выход» принимает положительное, во втором – отрицательное значение.
При определении параметра «Выход» вам также нужно указать значения «Начало наложения» и «Окончание наложения». Если эти значения совпадают, по окончании текущей фазы снаряд немедленно перейдет к следующей. Если они отличаются, то на отрезке между началом и окончанием наложения произойдет плавный переход от одной фазы к другой. Это обеспечивает более гладкое, без резких скачков, движение, особенно в случае, когда направляющие фаз различаются.
Как у многих других объектов StarCraft 2, у снарядов есть синхронная игровая часть и несинхронная агентская часть. Игровое состояние симулируется с частотой 32 раза в секунду – в два раза чаще, чем для обычной боевой единицы. Так же, как другие объекты, снаряды могут отрисовываться как по многу раз за игровой такт (если игра работает нормально), так и вообще не отрисовываться (при критическом падении производительности). Игровая часть обновляет симуляцию дважды за игровой такт, а затем передает данные агентской части снаряда, которую та обрабатывает с учетом собственной информации. При падении производительности агентская часть может отставать от игровой: в этом случае игрок увидит, что снаряд двигается рывками.
Из-за разделения на игровую и агентскую части у любого снаряда фактически есть две направляющие: игровая и агентская. Игровая направляющая соединяет точку, в которой находится атакующая единица, и точку, в которой находится цель атаки. Агентская направляющая соединяет точку, к которой прикреплен запуск снаряда и точку, к которой прикреплено событие «столкновение». Внутренний процесс под названием адаптация обеспечивает синхронизацию этих направляющих, чтобы снаряд прошел весь путь по игровой направляющей, и одновременно игрок увидел, как снаряд пролетел от атакующей единицы к цели.
Также замечателен тот факт, что дополнительные элементы движения синхронизируются с другими параметрами движения. Это обеспечивает визуально гладкое движение без резких скачков. Дополнительные элементы подстраиваются под направляющую таким образом, что скорость движения, обогащенного дополнительными элементами, совпадает со скоростью, заданной пользователем.
Необходимые каталоги
MoverData.xml определяет направляющую снаряда.
EffectData.xml определяет конфигурацию эффекта «Запуск снаряда», которая задает стартовую точку и цель снаряда и подбирает для него процедуру движения.
UnitData.xml присваивает снаряд определенной боевой единице, чтобы с ним можно было взаимодействовать в игровом мире.
WeaponData.xml или AbilData.xml задает тип оружия или способность, использование которых запускает эффект «Запуск снаряда».
ActorData.xml формирует агентскую часть снаряда и задает посредством параметра «Действие агента» визуальные и аудиоэффекты для процедуры атаки. Здесь же задаются координаты точки запуска снаряда и места попадания.
Редактирование свойств процедуры движения
Чтобы свести объем вводимых пользователем данных к минимуму, данные одной фазы автоматически копируются в следующую, если в следующей фазе нет данных, отличных от предыдущей.
Время для параметров вводится в секундах, углы измеряются в градусах.
В каждой фазе движения существует ряд общих параметров, применимых к одной или двум направляющим фазы, и еще несколько параметров, влияющих на особые направляющие. Также есть еще одна группа параметров, определяющих масштаб дополнительных элементов движения в текущей фазе.
Направляющая - Тип направляющей, по которой снаряд будет двигаться в течение всей фазы: параболическая, баллистическая, преследующая или линейная.
Ускорение - Задает ускорение снаряда. Отрицательное значение замедляет снаряд.
Диапазон ускорения - Диапазон дополнительного случайного ускорения, добавляемого к основному.
Скорость
Скорость, с которой снаряд входит в фазу. Обычно пользователь задает этот параметр для первой фазы, и тот автоматически распространяется на последующие фазы (в отличие от фаз с баллистической направляющей и линейной направляющей, для которой направление вращения снаряда не совпадает с направлением броска).
Баллистическая направляющая интерпретирует параметр «Скорость» исключительно как горизонтальную компоненту скорости снаряда.
Диапазон скорости - Диапазон дополнительной случайной скорости, добавляемой к основной.
Минимальная скорость - Минимальная скорость, с которой снаряд может перемещаться в выбранной фазе. Полезно задать это значение, чтобы снаряд не остановился из-за отрицательного ускорения.
Максимальная скорость - Максимальная скорость, с которой снаряд может перемещаться в выбранной фазе.
Гравитация - Сила тяжести, действующая на снаряд. С помощью этого параметра вы можете заставить одни снаряды «плавать» в воздухе, а другие, наоборот, – врезаться в землю с огромным ускорением.
Минимальная высота - Минимальное расстояние, на которое снаряд может приблизиться к земле. Полезно задавать этот параметр в случае, когда снаряд может столкнуться с уступом по пути к цели, особенно при использовании баллистической направляющей.
Дистанция обхода - Процедура движения проверяет пространство на наличие объектов, с которыми возможно столкновение. Радиус проверяемой области задается этим параметром. Чем больше радиус, тем раньше снаряд начнет изменять траекторию, чтобы избежать столкновения. Обратите внимание, что использование этого параметра снижает производительность игры.
Игнорировать поверхность - Если вы выставите этот флаг, то снаряд будет пролетать сквозь уступы, и вам не придется отягощать процедуру движения параметрами «Минимальная высота» и «Дистанция обхода».
Тип поворота
Определяет, как снаряд разворачивается к цели, и сохраняет ли он при этом вертикальное положение, как это делают пилоты истребителей. Существует три типа:
Стандарт. Снаряд выполняет развороты, как пилот истребителя, выполняя повороты вокруг вертикальной или поперечной оси в зависимости от того, по какой из этих траекторий он быстрее достигнет цели (это определяется углами поворота снаряда вокруг упомянутых осей и относительным расположением цели). Однако, в отличие от пилота, снаряд не выравнивает свое положение и может летать вверх тормашками.
С сохранением вертикали. Снаряд выполняет развороты, как пилот истребителя, и выравнивает свое положение по вертикали после выхода из разворота. При использовании этого типа поворота снаряд может выполнить известный трюк – «полупетлю Иммельмана», названную по имени немецкого аса, летавшего в Первую мировую войну.
Оптимальный. Кратчайший путь к цели рассчитывается с помощью кватернионов; это может привести к тому, что движение снаряда будет порой противоречить всем законам физики.
Отслеживание
Задает реакцию снаряда на движение цели, которое может привести к противоестественному поведению снаряда.
Без привязки. Используется по умолчанию. Агент снаряда отслеживает синхронное движение цели, игнорируя ее несинхронные действия. Это отменяет привязку снаряда к цели, если он слегка отклонился от курса: например, если разворот к цели приведет к резкому вращению снаряда в самом конце пути. Если вы не используете этот параметр, снаряд может при подлете к цели начать бешено вращаться; если вы используете этот параметр в неправильной ситуации, снаряд может пролететь мимо цели. .
Линейное. Снаряд всегда смотрит в направлении, заданном с самого начала траектории. Обычно используется при моделировании лазерных лучей, которые никогда не вращаются, вместо этого плавно смещаются в сторону, как в StarCraft I.
Текущее. При несинхронном действии цели снаряд не начнет разворачиваться к ней, как и при использовании значения «Без привязки», но все равно продолжит движение к точке столкновения.
Тип проверки прибытия
Задает расстояние до цели, при достижении которого считается, что снаряд достиг цели. Существует три типа:
Адаптивный. Используется по умолчанию. Проверка автоматически включает тип «2D» для точечных целей и тип «3D» для целей – боевых единиц.
2D. Проверяет приближение к цели только по двум горизонтальным координатам. Это может привести к тому, что снаряд ЭМИ может взорваться высоко над целью, посчитав, что уже долетел до нее.
3D. Проверяет приближение к цели по всем трем координатам. Баллистические снаряды обычно используют 2D-проверку для точечных целей, но иногда им нужна 3D-проверка, если их траектория проходит по очень крутой дуге. Без 3D-проверки снаряд может взорваться при достижении точных горизонтальных координат цели, но тем не менее находясь высоко над ней в трехмерном пространстве.
Никогда. Снаряд никогда не достигает цели. Полезно использовать этот тип, если вы хотите запустить снаряд в определенном направлении без четко обозначенной цели и задать алгоритму снаряда задачу найти цель самостоятельно.
Тип наложения
Определяет тип наложения, используемый при переходе между фазами. Существует три типа:
Линейный. Обычное линейное наложение.
Логарифмический. Наложение начинается быстро, но потом замедляется. Эффективно сглаживает кривые перехода от одной направляющей к другой.
Экспоненциальный. Наложение начинается медленно, а потом экспоненциально ускоряется.
Выход
Важное поле, определяющее, когда и как закончится фаза. Можно задать 4 значения:
Начало наложения. Дает сигнал начала следующей фазы. Если значение параметра равно значению «Окончание наложения», то это значит, что между фазами произойдет резкий переход без наложения.
Если значение положительное, то переход к следующей фазе начнется, когда снаряд отлетит на обозначенное числом расстояние от единицы, которая его запустила. Если оно отрицательное, то переход начнется на обозначенном числом расстоянии до цели. Оно может быть также и нулевым – тогда наложение начнется сразу при запуске снаряда. В последней фазе оно всегда равно нулю, поскольку фаза заканчивается, когда снаряд поражает цель. В любом случае расстояние отсчитывается по направляющей, дополнительные колебания снаряда в расчет не принимаются.
Окончание наложения. Дает сигнал окончания текущей фазы.
Диапазон начала наложения. Верхняя граница случайного числа, добавляемого к параметру «Начало наложения». Принимает только положительные значения. Благодаря ей с каждым запуском снаряд будет слегка менять свое поведение, что внесет в игру разнообразие. Какова бы не была величина этого параметра, начало наложения никогда не произойдет позже окончания наложения.
Диапазон окончания наложения. Верхняя граница случайного числа, добавляемого к параметру «Окончание наложения». Принимает только положительные значения.
Тип агента начала вращения
Конфигурирует визуализацию вращения снаряда при запуске, чтобы при необходимости можно было задать визуальное (агентское) вращение, не полностью совпадающее с программным (игровым).
Нет. Используется по умолчанию. Агентская и игровая компоненты вращения совпадают.
Разворот к цели. При запуске снаряд разворачивается в сторону цели. Не лучший выбор, если снаряд начинает движение, к примеру, от борта боевой машины.
Разворот к цели – 2D. Похоже по механике на «Разворот к цели», но при этом снаряд развернут параллельно земле.
Поддерживаемый. Агентская часть постоянно синхронизируется с кодом игры. Такой тип агента используется для щупалец.
Тип агента вращения
Конфигурирует визуализацию вращения снаряда, чтобы при необходимости можно было задать агентское вращение, не полностью совпадающее с игровым.
Нет. Используется по умолчанию. Агентская и игровая компоненты вращения совпадают.
Стыковка. Снаряд летит к цели, но для агента задается обратное вращение, основанное на координатах точки столкновения. Этот тип агента вращения используется, когда щупальце втягивается обратно после удара, поскольку при этом кончик щупальца должен соответствовать анимации возвращения. Если вектор точки столкновения равен (0, -1, 0), то у снаряда вектор должен быть (0, 1, 0), поскольку снаряд должен быть развернут к точке, откуда растет щупальце, тогда как само щупальце будет все еще направлено на цель.
Разворот к цели. Вне зависимости от траектории снаряд развернут в сторону цели. Используется для ракет «воздух-земля», которые после запуска разворачиваются к цели и летят прямо на нее.
Разворот к цели – 2D. Похоже по механике на «Разворот к цели», но при этом снаряд все время развернут параллельно земле. Можно использовать для объектов вроде НЛО, которые передвигаются «боком» вне зависимости от направления.
Вертикальный. Снаряд все время развернут вертикально (перпендикулярно земле) вне зависимости от направления.
Нулевой крен. Снаряд не вращается вокруг основной оси, но может менять высоту.
Тайм-аут фазы
Запускает окончание фазы по истечении определенного времени. Если для фазы задано наложение, то при срабатывании тайм-аута наложение запускается и заканчивается согласно заданным для него параметрам (например, начало задано равным 5, а окончание – 7; если вызванное тайм-аутом наложение начнется при значении «Начала наложения», равном 2, то «Окончанию наложения» будет присвоено значение 4).
Дополнительные элементы
Массив, в котором можно указать до двух значений масштаба (система не поддерживает большее количество, поскольку если элементов движения будет слишком много, то они станут визуально неразличимы). Эти значения определяют масштабность отображения дополнительных элементов. Для элемента типа «Волна» масштаб задает амплитуду колебания, а для элементов типа «Кружение» и «Спираль» он задает радиус обращения вокруг направляющей.
Преследующая направляющая используется для моделирования классических самонаводящихся ракет: она меняется в зависимости от местоположения цели. У многих снарядов есть фаза преследования цели, если это не обычные баллистические снаряды.
Ориентация
Определяет скорость поворота снаряда по трем осям: вертикальной, основной и поперечной. С помощью этого параметра можно создать модель истребителя, который разворачивается вокруг основной оси быстрее, чем вокруг поперечной, а вокруг поперечной – быстрее, чем вокруг вертикальной.
Скорость вращения измеряется в градусах в секунду. Для каждой из трех скоростей также можно активировать особый параметр «Макс.», который разрешает снаряду вращаться вокруг выбранной оси с максимально возможной для данной симуляции скоростью. Благодаря этому параметру снаряд всегда будет попадать в цель, приблизившись к ней на достаточно близкое расстояние.
Диапазон ориентации - Каждое из значений этого параметра задает верхнюю границу случайного числа, добавляемого к скорости вращения снаряда вокруг вертикальной, основной и поперечной оси.
Ускорение ориентации - Определяет ускорение поворота снаряда по трем осям.
Диапазон ускорения ориентации - То же самое, что «Диапазон ориентации», но для ускорения.
Угол заноса
Позволяет снарядам уходить в занос, как машины в гоночных играх, только в трехмерном пространстве. Если снаряд сильно отклонился от курса, он продолжает скользить по траектории боком, но постепенно теряет скорость. При достаточно низкой скорости его ускорение возрастает (так же, как при понижении скорости авто возрастает сцепление колес с поверхностью дороги), выводя снаряд из заноса.
Скорость выхода из заноса
Задает скорость, при которой снаряд выходит из заноса. Чем выше это значение, тем быстрее снаряд будет выходить из заносов.
С помощью этой направляющей можно моделировать движение снарядов катапульты и подобных им. Для снаряда при этом достаточно задать горизонтальную составляющую скорости или время полета, но не оба этих параметра сразу.
Скорость
Это значение задается для всех направляющих, но только баллистическая направляющая трактует это значение как горизонтальную скорость полета снаряда. Это позволяет рассматривать баллистическую направляющую как преследующую в целях баланса. Этот параметр автоматически определяет остальные, предотвращая создание нереализуемых комбинаций параметров.
Время полета
Задает время, за которое снаряд должен долететь до цели, невзирая на расстояние до нее. Позволяет запланировать время прибытия снаряда. Этот параметр автоматически определяет остальные, предотвращая создание нереализуемых комбинаций параметров.
Высота выхода
Действует так же, как обычный параметр «Выход», но задается в процентах от высоты. Положительные значения соответствуют точкам траектории до вершины параболы, отрицательные – точкам после нее. Например, значение, равное 0,9 значит, что выход из фазы начнется, когда снаряд пролетит 90% пути до вершины параболы, а -0,9 – что выход начнется, когда снаряду, миновавшему вершину параболы, останется пролететь до конца пути 90%.
Параболическая направляющая обычно используется для моделирования прыжков, похожих на прыжки головорезов (собственно, ради них она и была создана). Она позволяет контролировать скорость снаряда в любой точке параболы без изменений собственно параболической траектории.
Парабола – вертикаль
Если этот флаг выставлен, то снаряд всегда развернут параллельно земле, что позволяет боевым единицам вроде головореза сохранять вертикальное положение на протяжении прыжка. Если флаг не выставлен, траектория задает положение снаряда, заставляя его разворачиваться вершиной вверх при подъеме и вниз – при спуске.
Парабола – отступ
Задает зазор, добавляемый процедурой движения к наиболее высоко расположенной из двух точек – запуска и цели. Это переменная величина: к ней может добавляться случайное число, чтобы внести визуальное разнообразие в серию запусков снаряда по этой направляющей.
Парабола – расстояние
Это массив чисел, задающих расстояние между четырьмя особыми точками параболы:
Запуск. Первая точка параболы.
До вершины. Располагается на восходящей к вершине ветви параболы. Когда снаряд достигает ее, он начинает торможение.
После вершины. Располагается на нисходящей от вершины ветви параболы. В этой точке снаряд заканчивает сбрасывать скорость и даже может начать ускорение.
Приземление. Располагается на некотором расстоянии до точки приземления.
Парабола – ускорение
Это массив чисел, определяющих ускорение в различных частях параболы:
Запуск. Первая часть параболы.
Подъем. Часть между «Запуском» и «Вершиной».
Вершина. «Макушка» параболы.
Спуск. Часть между «Вершиной» и «Приземлением».
Приземление. Расстояние до точки приземления.
Задайте значение «Подъем» больше, чем значение «Спуск», если вы хотите, чтобы прыжок получился более реалистичен.
Отправляет снаряд по произвольной линейной траектории. Несмотря на кажущуюся ограниченную полезность, это самый гибкий и мощный вид направляющей с точки зрения создания визуальных эффектов. При умелом использовании наложений несколько одновременно запущенных по разным линейным направляющим снарядов могут создать потрясающий визуальный эффект.
Линейная – тип вращения
Нет. Используется по умолчанию. Если линейная направляющая используется в первой фазе, снаряд будет следовать ей, в противном случае продолжит путь в заданном ранее направлении, поскольку линейное движение может немного изменить направление снаряда, не влияя при этом на его тип вращения.
Разворот к старту. В начале фазы снаряд развернут в ту же сторону, что и запускающая его единица или орудие. Полезно использовать только для первой фазы.
Разворот к цели. Снаряд развернут к точке столкновения на протяжении всего полета.
Разворот к цели – 2D. Действует так же, как «Разворот к цели», но снаряд на протяжении полета развернут параллельно земле.
Разворот вперед. Снаряд развернут в направлении текущей (линейной) направляющей.
Направленный. Позволяет пользователю задать произвольный разворот снаряда в локальных координатах. Можно использовать, если вы хотите, чтобы снаряд в начале пути разворачивался в произвольном направлении (это обеспечивает интересный визуальный эффект). Например, при моделировании открепления ракеты от ракетодержателей можно использовать линейную направляющую, а в следующей фазе использовать направленный разворот, чтобы ракета развернулась в направлении движения к цели.
Линейная – вектор
Локальные координаты прямой направляющей. Их можно не нормализовать.
Линейная – угол разворота
Позволяет пользователю задать отклонение от курса – поворот вокруг вертикальной оси в исходной системе координат.
+ Макс. Определяет максимальное значение угла, на который снаряд может отклониться от курса в положительном (по часовой стрелке) направлении. Может принимать и отрицательные значения в случае несимметричных вариантов отклонения.
- Макс. Задавать не обязательно. Определяет максимальное значение угла, на который снаряд может отклониться от курса в отрицательном (против часовой стрелки) направлении. Может принимать и положительные значения в случае несимметричных вариантов отклонения.
+ Мин. Задавать не обязательно, но если этот параметр задан, то необходимо задать также «- Макс.» и «- Мин.». Используется для создания зазора между вариантами отклонений, чтобы снаряды не улетали далеко влево или вправо, но и не летели посередине.
- Мин. Задавать не обязательно, но если этот параметр задан, то необходимо задать также «- Макс.» и «+ Мин.». То же самое, что «+ Мин.», но здесь задается отрицательный угол.
Другими словами, пользователь может задать диапазон обстрела с разворотом влево или вправо и с зоной запрета огня, чтобы снаряды не пролетали, к примеру, сквозь фюзеляж самолета. С помощью этих чисел также можно создать: а) Области обстрела в виде морской звезды; б) Зрелищные «хлыстовые» атаки, когда снаряд уходит в сторону, прежде чем поразить цель.
Линейная – угол подъема
То же самое, что «Линейная – угол разворота», только здесь задается угол разворота вокруг поперечной оси. Если вы зададите все четыре минимальных параметра, снаряды будут расходиться по квадратному кольцу, не покрывая всю квадратную область обстрела. Это может оказаться полезным при создании некоторых выравнивающихся траекторий.
Линейная – направление вперед
Вектор, заданный в локальной системе координат и задающий произвольный разворот снаряда при использовании «Направленного» типа разворота.
В отличие от фаз, дополнительные элементы применяются ко всему маршруту движения снаряда. Одновременно для снаряда можно назначить два дополнительных элемента, которые в равной степени будут влиять на конечную позицию снаряда.
У дополнительных элементов существует понятие «масштаб», которое определяет, как сильно снаряд может отклоняться от основной траектории. Масштаб равен нулю в начальной и конечной точках движения, но может варьироваться во всех остальных фазах полета. Система дополнительных элементов автоматически использует кубические сплайны, чтобы плавно переключаться между значениями масштаба в ходе движения снаряда. Заданное значение масштаба достигается снарядом в середине фазы.
Дополнительное расстояние, которое пролетает снаряд вследствие действия дополнительных элементов, не влияет на выход из той или иной фазы. Процесс выхода контролируется исключительно основной направляющей. Дополнительное расстояние сложно предопределить с какой-либо точностью, поэтому оно может значительно и непредсказуемо менять процесс смены фаз.
Тип
Тип дополнительного элемента: волна, спираль или кружение.
Полярность
Позволяет определять изначальный вектор дополнительного элемента. Для волны это направление первого «скачка» (положительная или отрицательная полярность). Для спирали полярность определяет движение по часовой стрелке (положительная) или против часовой стрелки (отрицательная). Этим можно пользоваться, к примеру, для координирования движения парных ракет. Полярность может принимать такие значения:
Положительная. Снаряд начнет движение в направлении, соответствующем положительному значению.
Отрицательная. Снаряд начнет движение в направлении, соответствующем отрицательному значению.
Случайная. Дополнительный элемент с вероятностью 50% заставит снаряд двигаться в одном из этих направлений.
Чередующаяся. Определяет движение в зависимости от текущего индекса цикла. Этот индекс увеличивается с каждой атакой или с каждым другим действием, выполняемым атакующей единицей, и может использоваться для управления полярностью в циклах типа «Лента».
Направляющая полярности
Задает индекс цикла выбора или индекса выполнения процедур движения для чередующейся полярности. Строка ::RollingIndex указывает, что полярность дополнительного элемента изменяется в зависимости от индекса выбора, в то время как относительный ID эффекта позволяет сделать так, чтобы полярность менялась с каждым последующим выполнением этого эффекта в рамках данного древа эффектов. Таким образом ::RollingIndex варьирует полярность для всех атак, а корректировка свойств эффекта позволяет изменить полярность для конкретной атаки.
Ось
Ось – это вектор в локальной системе координат, который служит для управления осью, вокруг которой снаряд совершает движение в соответствие с дополнительными элементами. Для волны он определяет направление синусоиды. Для спирали и кружения – ось вращения. В большинстве случаев вектор определяется значениями 0,-1,0 (вперед) или 0,1,0 (назад). При необходимости, меняя значения, можно создавать дополнительные элементы для нестандартного движения (например, направленная вбок ось вращения для спирали позволяет задать движение по вертикальной циклоиде).
Длина волны
Определяет расстояние, необходимое волне для описания полной 360-градусной синусоиды или спирали для завершения такта вращения.
База. Минимальная длина волны.
Дальность. Случайное значение, которое добавляется к базовой длине волны. Позволяет заметно менять синусоиды и спирали, делая движение снарядов более естественным.
Вероятность изменения длины волны
Выраженная в процентах вероятность того, что длина волны будет пересчитана на каждой «полуволне» (после каждого «скачка») или полуорбите.
Этот элемент похож на спираль, которая не всегда вращается в одном направлении. Он предназначен для создания так называемых «пьяных ракет», которые медленно двигаются по спирали, так же медленно меняя направление и скорость.
Скорость кружения - Определяет скорость вращения снаряда при кружении.
Диапазон скорости кружения - Диапазон для случайного значения, прибавляемого к базовой скорости кружения.
Максимальная скорость кружения - Максимальная скорость вращения снаряда при кружении.
Диапазон максимальной скорости кружения - Диапазон для случайного значения, прибавляемого к базовой максимальной скорости кружения.
Ускорение кружения - Определяет ускорение снаряда при кружении.
Диапазон ускорения кружения - Диапазон для случайного значения, прибавляемого к базовому ускорению кружения.
Предпросмотр
Используется, чтобы быстро и точно определить местонахождение на модели точек вылета и попадания снарядов.
Эффекты
Для того чтобы запустить снаряд, необходимо несколько эффектов:
Запуск снаряда. Этот эффект служит непосредственно для запуска снаряда и поэтому является обязательным при его создании. Далее приведены некоторые важные для него параметры:
Расстояние срабатывания. Расстояние до цели, на котором запускается эффект попадания снаряда. С помощью этого параметра можно создавать взрывчатку, срабатывающие при приближении цели.
Фильтры смены цели. Определяют следующую цель снаряда, если начальная цель погибает, до того как снаряд попадает в нее.
Радиус смены цели. Единицы, находящиеся в этом радиусе, будут считаться подходящими целями при перенаправлении снаряда.
Флаг смены цели. Находится в поле «Флаги». Определяет, может ли данный снаряд менять цель.
Эффект «Запуск снаряда» также позволяет пользователю настроить динамический набор процедур движения для снаряда, основываясь на различных условиях:
Процедуры движения – Ссылка. Список процедур движения, из которых выбирается одна в момент запуска снаряда.
Процедуры движения – Расстояние меньше или равно. Список, соответствующий списку процедур движения. Расстояние между запускающей единицей и целью должно быть меньше указанного значения или равно ему, чтобы соответствующая процедура могла быть выбрана.
Цикл выбора процедур движения. Доступные значения: «Лента» и «Скачок». «Лента» выбирает процедуры движения по образцу 12341234, а «скачок» – 1234321234.
Шаг выбора процедур движения. Определяет, сколько элементов массива процедур движения будут выбираться при каждой атаке.
Цикл выполнения процедур движения. Подобен «Циклу выбора процедур движения», но служит для запуска родительского эффекта «Запуск снаряда».
Шаг выполнения процедур движения. Подобен «Шагу выбора процедур движения », но служит для запуска родительского эффекта «Запуск снаряда».
Диапазон выполнения процедур движения. Количество «лент» и «скачков» в одной очереди выполнения.
К примеру, при параметрах «Шаг выбора» – 4, «Шаг выполнения» – 1, «Диапазон выполнения» – 4 и «Цикл выбора процедур движения» – «скачок» мы получаем следующую модель:
0.1.2.3.2.1.0 4.5.6.7.6.5.4 8.9.10.11.10.9.8
Еще одним важным полем является «Процедуры обратного движения», которое используется для щупалец. Процедура обратного движения выбирается в зависимости от того, как далеко находится щупальце от исходной точки, и указывает на то, что ему нужно вернуться в нее.
Создание длительного эффекта. Необходим для разброса очередей снарядов по определенным точкам в зависимости от назначенных пользователем временных параметров.
Методы прикрепления - Определяют, из каких точек прикрепления происходит запуск снаряда, и в какие точки он попадает. Определить метод прикрепления можно с помощью агента «Действие», который управляет атакой.
Агенты снаряда - Этот компонент системы агентов соотносит соответствующий анимационный фрагмент с началом и концом фаз движения. Также можно запускать тот или иной анимационный фрагмент по прошествии определенного времени после начала фазы.
В этом разделе содержится информация о том, как добиться определенных графических эффектов и избежать типичных ошибок.
Короткая анимация «накапливания мощности»
К примеру, орудие «Ямато» в течение некоторого времени заряжается энергией перед выстрелом. Наиболее действенный способ добиться этого – назначить фазе преследования нулевые скорость и ускорение и установить требуемую задержку для анимации.
Избежание зацикливания процедуры движения
Иногда скорости поворота недостаточно, чтобы снаряд попал по неподвижной цели. Это может случиться, когда цель непосредственно перед попаданием начинает двигаться, а потом погибает или останавливается, таким образом вновь становясь целью для снаряда. Избежать бесконечного зацикливания движения снаряда можно, назначив ему «терминальную фазу». По сути это фаза преследования с параметром ориентации «Макс.», которая позволяет снаряду разворачиваться мгновенно. Таким образом от него становится невозможно «убежать».
Принудительное попадание в цель снарядов с заносом
Если не использовать этот прием, то от снаряда, который двигается с заносами, грамотный игрок может уходить бесконечно, просто меняя направление движения цели непосредственно перед попаданием. Хорошее решение проблемы – установить тайм-аут для фазы заноса. Важно помнить, что замедление при выхода из заноса нужно сделать очень сильным, а угол – равным 0. Это позволит снаряду выйти из заноса быстро, но при этом не резко. Еще один способ – это задать позитивное значение для параметра «Выход». Это позволит снарядам выходить из фазы заноса, после того как они пролетят некоторое расстояние.
Избежание обратного движения с зацикленным кружением
If a unit is configured to use a Create Persistent effect to launch a burst or barrage of missiles, then that Create Persistent effect must be marked as channeled. This ensures that the unit does not accidentally try to create missiles while it is playing its death model, since this can cause the missiles to get empty configuration data.
Eliminating backwards-looking loops with revolvers
Если снаряд разворачивается достаточно резко, выполняя медленное вращение, направленное «внутрь» дуги разворота, то это может привести к образованию петли. Кружение всегда «заставляет» снаряд вращаться вокруг оси направления движения, поэтому при крутом повороте может оказаться так, что снаряд будет выглядеть как летящий в обратном направлении, а направляющая будет пытаться заставить снаряд быстро вращаться вокруг точки, где он «запутался». Эту проблему можно решить, увеличив скорость вращения для направляющей, чтобы она быстро «перескакивала» точку разворота по очень малой дуге. Также можно просто избегать крутых поворотов или уменьшать масштаб дополнительного элемента, чтобы побочный эффект был минимальным. Обычно достаточно уменьшить масштаб в точке крутого поворота, чтобы визуально эффект стал практически незаметным.
Снаряды с дополнительным элементом, пролетающие мимо цели
Это может произойти, когда для снаряда с дополнительным элементом используется агент отслеживания «Без привязки» (назначается по умолчанию). Он делает так, что при приближении к цели на достаточное расстояние курс его движения становится прямой линией. Однако иногда дополнительные элементы могут задавать неверное направление движения снаряда, отправляя его в далекие дали. Чтобы избежать этого, следует просто использовать тип отслеживания «текущий».
Добавить комментарий
|
|