Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава XX. Продвинутый маппинг.

§ 20.12 Катапульта на карте de_rats3

Все знают серию карт DE_RATS и в частности карту DE_RATS3, на которой есть катапульта. В этой статье мы расскажем как она устроена. Для создания катапульты потребуются следующие энтити-объекты:

Для тех, кто не помнит, как выглядит катапульта на DE_RATS3, и какие эффекты создаются при прыжке с нее, напомним:

Катапульта на De_Rats3


Для создания полной копии такой катапульты необходимо 23 энтити-объекта! Однако сразу спешим Вас успокоить, львиная доля, а именно 18 из 23 объектов, используется для реализации эффектов с лучами. Если такие эффекты Вам не нужны, просто не создавайте эти 18 объектов, а ограничьтесь 5-ю.

Мы сначала рассмотрим создание катапульты без каких либо эффектов. А во второй части статьи разберемся, как устроен эффект с лучами.

1. Создание катапульты

Работу катапульты обеспечивают 5 объектов (см. схему ниже).

Схема работы катапульты


Теперь посмотрим, как это реализовано в редакторе.

Мы имеем площадку, окрашенную черной текстурой (см. рис. ниже). На рисунке она скрыта многочисленными объектами. Это простой браш, изображающий место для толкания.

На остальные объекты пока внимания не обращайте, чтобы не запутаться.

Итак, первым делом над этим брашем создаем trigger_multiple (показан стрелкой).

Trigger_multiple и 2 trigger_relay


Теперь внутри trigger_multiple (т.е. чуть выше толкательного браша) создаем звук подъема игрока вверх (ambient_generic). На рисунке объект ambient_generic скрыт триггером, но он там есть :) и это будет видно на предпоследнем рисунке статьи.

Далее создаем два триггера trigger_relay (см. рис. выше, в верху). Один из этих триггеров будет включать толкатель, а другой через 1,5 секунды выключать.

Теперь посмотрите на рисунок ниже. Там показан объект trigger_push, который закрывает собой уже созданный нами trigger_multiple. На остальные объекты, повторимся, пока внимания не обращайте.

Trigger_push и есть толкающий вверх объект. Форма этого триггера повторяет форму черного браша, т.е. является 8-ми гранной призмой.

Trigger_push


Вот собственно и все, что касается непосредственно катапульты. Она уже будет работать, ну, конечно, после выставления всех свойств энтити-объектов.

Свойства объектов, составляющих катапульту.

1. Trigger_multiple (активирует звук и 2 триггера)
Target: sponge_jump (это имена звука и двух trigger_relay)
Delay before trigger: 0 (срабатывает без задержки, т.е. через 0 секунд)
Delay before reset: 2 (в следующий раз сработает через 2 секунды)
2. Ambient_generic (звук прыжка)
Name: sponge_jump
Path: weapons/electro5.wav (путь к звуку)
Volume: 5 (громкость)

Флаги:

Medium Radius - средний радиус распространения звука
Start Silent - изначально (в начале раунда) звук молчит
Not Toggled - играет 1 раз (затем его необходимо активировать повторно)
3. Trigger_relay (включает толкатель)
Name: sponge_jump
Target: sponge_push (ВКЛючает толкатель)
Delay before trigger: 0 (мгновенно включает толкатель, т.е. через 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. Создание эффектов из лучей

Теперь разберем сложную часть катапульты - эффект "кривых" лазерных лучей (см. самый первый рис.).

Схема работы выглядит следующим образом:

Хитроумность данного эффекта заключается в том, что в нем используется 3 объекта env_beam, которые испускают лазерные лучи. Для того, чтобы разобраться с лучами, необходимо хорошо представлять работу данного объекта.

Принцип работы env_beam заключается в следующем: создается собственно объект env_beam, далее создается начальная точка для луча (какой-нибудь энтити-объект) и затем - конечная точка, куда будет бить луч (второй энтити-объект).

Весь прикол заключается в том, что первая (начальная) точка неподвижная, а вот вторая (конечная) подвижная! Движение происходит по кругу, т.е. лучи испускаются из неподвижной центральной точки и бьют в движущиеся по кругу точки. Это прекрасно видно на самом первом рисунке.

Теперь посмотрим, как это реализовано в редакторе.

На картинке ниже обратите внимание на 3 фиолетовых кубика (вверху) - это 3 env_beam (испускатели лазерных лучей). Лучи будут испускаться не из этих объектов, а из начальных точек в конечные!

Создание эффекта лазерных лучей при прыжке игрока с катапульты (Рис.1)


Желтые 8 объектов - это path_corner, т.е. точки по которым движутся неуправляемые поезда func_train.

На рисунке ниже уже создано 3 поезда (func_train), зеленого цвета. Эти 3 поезда по очереди движутся по всем 8-ми желтым точкам траектории.

Создание эффекта лазерных лучей при прыжке игрока с катапульты (Рис.2)


Помните, что для каждого func_train необходим ORIGIN-браш, т.к. это вращающийся объект. Мы максимально упростили "поезда" и сделали их из ORIGIN-брашей. Т.е. ORIGIN-браши превратили в func_train.

А теперь самое интересное. Эти 3 поезда (невидимых и нематериальных в игре) и будут конечными точками, в которые будут попадать лазерные лучи! Это назвается использованием поездов не по назначению :)

ВАЖНО! В центре, немного выше черного браша, создаем начальную точку для всех лучей. Это будет точечный объект info_target (красная мишень на рисунке выше).

И последнее, поезда необходимо автоматически привести в движение в начале раунда. Сделаем это при помощи 3-х триггеров trigger_auto. Вернемся к третьему рисунку статьи и посмотрим, где мы их разместили.

Trigger_multiple и 2 trigger_relay


Триггеры trigger_auto, напомним, автоматически активируют объект в начале игры, и это как раз пригодится нам для активации поездов.


Свойства объектов, создающих эффект лазерных лучей.

6.1 Trigger_auto (запускает 1-ый поезд)
Target: focus1 (активируется первый поезд func_train)
Delay before trigger: 0 (срабатывает без задержки, т.е. через 0 секунд)
Delay before reset: 2 (в следующий раз сработает через 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 (имя начальной точки траектории для первого поезда)
Speed: 128 (скорость поезда)

Флаги:

Not Solid - нематериальный в игре


Другие 2 объекта func_train отличаются лишь несколькими параметрами. Их мы и рассмотрим.

7.2 Func_train (2-ой поезд)
Name: focus2
First stop target: focus_pc3 (имя начальной точки траектории для второго поезда)


7.3 Func_train (3-ий поезд)
Name: focus3
First stop target: focus_pc6 (имя начальной точки траектории для третьего поезда)


Дальше идут 8 объектов path_corner со схожими свойствами. Мы приводим свойства первых 2-х и последнего объекта.

8.1-8.8 Path_corner (8 точек траектории для всех 3-х поездов)
Name: focus_pc1
Next stop target: focus_pc2 (имя следующей точки в траектории поезда)

Name: focus_pc2
Next stop target: focus_pc3 (имя следующей точки в траектории поезда)

...........
...........
...........

Name: focus_pc8
Next stop target: focus_pc1 (имя следующей точки в траектории поезда)


9. Info_target (начальная точка, откуда бьют лазерные лучи)
Name: arc_centre


10.1 Env_beam (объект, испускающий 1-ый лазерный луч)
Name: sponge_push
Start entity: arc_centre (имя начальной точки, из которой испускаются все 3 луча)
Ending entity: focus1 (имя конечной точки, в которую будет попадать 1-ый луч)
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 - окончание луча будет затененным


Другие 2 объекта env_beam отличаются лишь одним параметром (именем конечной точки).

10.2 Env_beam (объект, испускающий 2-ой лазерный луч)
Ending entity: focus2 (имя конечной точки, в которую будет попадать 2-ой луч)


10.3 Env_beam (объект, испускающий 3-ий лазерный луч)
Ending entity: focus3 (имя конечной точки, в которую будет попадать 3-ий луч)



Вот и все нехитрое устройство катапульты :) Если Вы дошли до конца этой статьи и при этом все поняли - наши поздравления! Вы настоящий профессиональный маппер!


Ссылки

trigger_push.zip [32Кб] - в архиве карта-пример в форматах BSP и RMF.


Глава XX. Продвинутый маппинг.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0034 ]