Для изготовленияданной катапульты нужно 23 энтити-объекта! Однако, успокоии вас, большая
доля, а именно 18 из 23 энтити-объектов, используется для реализации
эффектов с лучами. Если данные эффекты вам не нужны, просто не
создавайте эти 18 объектов, а ограничьтесь пятью.
Мы сначала расскажем про изготовление катапульты без спецэффектов. А во 2-ой части статьи расскажем про устройство лучей.
1. Создание катапульты
Катапульта работает благодаря пяти энтити-объектам (смотрите схему ниже).
Игрок шагает в trigger_multiple
Trigger_multiple включает звук подъема игрока (ambient_generic), а также два триггера trigger_relay
Триггеры trigger_relay включают и через 1,5 секунды выключают «толкатель» (trigger_push)
Trigger_push толкает игрока вверх
Рассмотрим, как это сделано в редакторе.
У нас есть площадка, окрашенная чёрной текстурой (смотрите картинку
ниже). На картинке она скрыта всякими энтити-объектами. Это обычный
браш, который изображает место, откуда игрок будет отталкиваться.
Что же, сначала над данным брашем сделаем trigger_multiple (показан стрелкой).
Теперь внутри trigger_multiple (то есть чуть выше толкательного браша) сделаем звук подъема игрока вверх (ambient_generic). На рисунке звук скрыт триггером, но, поверьте, он там есть :-)
Далее делаем 2 триггера trigger_relay (смотрите картинку выше,
вверху). 1 из данных триггеров будет активировать толкатель, а другой
через 1,5 секунды деактивировать.
Теперь посмотрим на картинку ниже. Там показан брашевый энтити-объект trigger_push.
Trigger_push и есть толкающий вверх энтити-объект. Форма
данного триггера повторяет форму чёрного браша, то есть является
восьмигранной призмой.
Вот в сущности и всё, что касается напрямую катапульты. Она уже будет
работать, естественно, после указания всех параметров энтити-объектов.
1. Trigger_multiple (запускает звук и два триггера)
Target: sponge_jump (это названия звука и 2-ух trigger_relay) Delay before trigger: 0 (активирует объекты без задержки, то есть через ноль секунд) Delay before reset: 2 (в следующий раз будет готов к работе через две секунды)
Medium Radius — средний радиус, на который раздаётся звук Start Silent — изначально (в начале раунда) звук не проигрывается Not Toggled — играет один раз (затем его нужно запустить повторно)
3. Trigger_relay (включает толкатель)
Name: sponge_jump (название объекта) Target: sponge_push (включает толкатель) Delay before trigger: 0 (мгновенно активирует толкатель, то есть через ноль секунд) Trigger state: On (здесь указывается, что триггер работает только на включение)
4. Trigger_relay (выключает толкатель через 1,5 секунды)
Name: sponge_jump (название объекта) Target: sponge_push (выключает толкатель через 1,5 секунды) Delay before trigger: 1.5 (время в секундах до выключения толкателя) Trigger state: Off (здесь указывается, что триггер работает только на выключение)
5. Trigger_push (толкатель)
Name: sponge_push (название объекта) Angle: Up (направление толкания игрока, вверх) Delay before trigger: 0 (толкает игрока без задержки по времени) Speed of push: 3000 (скорость толкания игрока)
Флаги:
Start Off — изначально (в начале раунда) данный энтити-объект выключен
2. Создание эффектов из лучей
Теперь рассмотрим более сложную часть катапульты — эффект лазерных лучей (смотрите самую первую картинку).
Схема работы выглядит следующим образом:
В начале раунда три триггера (trigger_auto) запускают в движение три прозрачных поезда (func_train)
Данные три поезда (func_train) начинают ездить по кругу из восьми объектов path_corner
Когда игрок прыгает, происходит зупуск всех 3-х источников лучей (env_beam)
Лазерные лучи бьют из центральной точки-мишени (info_target) в ездящие по кругу поезда
Заумность этого эффекта заключается в том, что в нём задействованы три точечных энтити-объекта env_beam, которые испускают лазерные лучи. Для того, чтобы разобраться с лучами, нужно хорошо представлять работу этого энтити-объекта.
Принцип работы env_beam заключается в следующем: создается собственно объект env_beam,
затем делается начальная точка для луча (какой-нибудь энтити-объект) и
потом — конечная точка, куда будет бить луч (второй какой-нибудь
энтити-объект).
Весь прикол заключается в том, что1-ая (начальная) точка неподвижна, а
вот вторая (конечная) подвижна! Движение второй точки идёт по кругу, то
есть лучи испускаются из стоящей центральной точки и бьют в движущиеся
по кругу точки (невидимые поезда). Как это выглядит вы можете увидеть на
самой первой картинке.
Теперь рассмотрим, как это сделано в редакторе.
На рисунке ниже обратите внимание на три фиолетовых кубика (вверху) — это три объекта env_beam
(испускатели лазерных лучей). Однако, помните, что лучи будут
испускаться не из данных объектов, а из начальных точек в конечные!
Желтые восемь объектов — это path_corner, то есть точки, по которым движутся неуправляемые невидимые поезда — энтити-объекты func_train.
На картинке ниже уже создано три поезда (func_train), зеленого цвета. Эти три поезда поочерёдно движутся по всем восьми жёлтым точкам маршрута.
Как вы, конечно, помните, для каждого энтити-объекта func_train нужен ORIGIN-браш, так как это крутящийся объект. Мы упростили поезда и сделали их из ORIGIN-брашей. То есть ORIGIN-браши превратили в func_train! Так тоже можно! :-)
А теперь о самом интересном. Эти три поезда (прозрачных и
нематериальных) и будут конечными точками, в которые будут бить лазерные
лучи! Это назвается применение поездов не по предзначению :-)
ВАЖНО! В центре, немного выше чёрного браша, сделаем начальную точку для всех лучей. Это будет точечный энтити-объект info_target (красная цель на картинке выше).
И последнее, невидимые поезда нужно автоматом заставить двигаться в
начале каждого раунда. Сделаем это с помощью трёх триггеров trigger_auto. Вернёмся к третьей картинке материала и посмотрим, где мы их расположили:
Триггеры trigger_auto, как вы возможно знаете, автоматом
запускают энтити-объект в начале раунда, и это как раз пригодится нам
для запуска невидимых и нематериальных поездов.
Параметры объектов, создающих эффект лазерных лучей.
6.1 Trigger_auto (активирует 1-ый поезд)
Target: focus1 (запускается первый поезд func_train) Delay before trigger: 0 (срабатывает без задержки, то есть через ноль секунд) Delay before reset: 2 (в следующий раз сработает через две секунды) Trigger state: On (здесь устанавливается, что триггер работает только на включение энтити-объекта)
6.2 Trigger_auto (активирует 2-ой поезд)
Target: focus2 (запускается второй поезд func_train) Delay before trigger: 0 Delay before reset: 2 Trigger state: On
6.3 Trigger_auto (активирует 3-ий поезд)
Target: focus3 (запускается третий поезд func_train) Delay before trigger: 0 Delay before reset: 2 Trigger state: On
7.1 Func_train (1-ый поезд)
Name: focus1 (название поезда) Render mode: Texture (данный режим отображения делает поезд прозрачным) FX Amount: 0 (данный режим отображения делает поезд прозрачным) First stop target: focus_pc1 (название начальной точки маршрута для 1-ого поезда) Speed: 128 (скорость поезда)
Флаги:
Not Solid — нематериальный в игре, то есть через него можно свободно проходить
Другие два энтити-объекта func_train отличаются лишь
несколькими параметрами. Только их мы и рассмотрим. Другие же параметры —
такие же, как и у первого поезда, их мы опустим.
7.2 Func_train (2-ой поезд)
Name: focus2 (название поезда) First stop target: focus_pc3 (название начальной точки маршрута для 2-ого поезда)
7.3 Func_train (3-ий поезд)
Name: focus3 (название поезда) First stop target: focus_pc6 (название начальной точки маршрута для 3-его поезда)
Дальше идут восемь точечных энтити-объектов path_corner со похожими параметрами. Мы приводим свойства первых двух и последнего объекта.
8.1-8.8 Path_corner (восемь точек маршрута для всех трёх поездов)
Name: focus_pc1 (название 1-ой точки маршрута) Next stop target: focus_pc2 (название следующей точки маршрута поезда)
Name: focus_pc2 (название 2-ой точки маршрута) Next stop target: focus_pc3 (название следующей точки маршрута поезда)
........... ........... ...........
Name: focus_pc8 (название 8-ой точки маршрута) Next stop target: focus_pc1 (название следующей точки маршрута поезда)
9. Info_target (начальная точка, из которой бьют лазерные лучи)
Name: arc_centre (название объекта)
10.1 Env_beam (объект, испускающий первый лазерный луч)
Name: sponge_push (название объекта) Start entity: arc_centre (название начальной точки, из которой испускаются все три луча, энтити-объект info_target) Ending entity: focus1 (название конечной точки, в которую будет попадать первый луч, первый поезд func_train) Brightness: 192 (яркость луча, достаточно высокая) Beam color: 128 255 255 (цвет луча в формате RGB — красный, зеленый, синий; в нашем случае — бирюзовый) Radius: 256 (радиус) Life: 1 (время в секундах, в течении которого рисуется луч; 0 — чтобы луч не исчезал) Width of beam: 64 (ширина луча от 0 до 255) Ammount of noise: 255 (изогнутость луча, значения от 0 до 255) Sprite name: sprites/zbeam1.spr (путь к спрайту, который будет лучем) Texture scroll rate: 35 (скорость движения текстуры спрайта) Frames per 10 seconds: 0 (скорость анимации луча) Strike again time: 1 (частота появления луча, работает если Life > 0) Damage: 0 (повреждения при поподании игрока под луч, 0 — нет повреждений)
Флаги:
Toggle — луч можно включать и выключать Start Sparks — из места появления луча будут сыпать искры End Sparks — из места, где заканчивается луч, будут сыпать искры Shade Start — начало луча будет затененным Shade End — окончание луча будет затененным
Другие два объекта env_beam отличаются лишь 1 параметром — названием конечной точки.
10.2 Env_beam (объект, испускающий второй лазерный луч)
Ending entity: focus2 (название конечной точки, в которую будет попадать второй луч)
10.3 Env_beam (объект, испускающий третий лазерный луч)
Ending entity: focus3 (название конечной точки, в которую будет попадать третий луч)
Вот и все нехитрое устройство катапульты :-) Если Вы дошли до конца
данного материала и при этом всё поняли — наши поздравления! Вы
взаправдашний профессиональный создатель карт! :-)