Site menu


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Search

add_newAdd submission
Latest submissions

<JAM>
m1-palinka


HL-HEV
hl-hev


Авиаудар на карте de_torn

Добавил: root
2013-01-07 16:13:13
267 views

В этой статье мы расскажем о том, как устроен авиаудар на карте de_torn. Вы разве не знаете, что на de_torn есть авиаудар? Тогда поспешите прочитать о нем в разделе «Секреты». Для создания подобного авиаудара нам понадобятся следующие энтити-объекты:

Вот как будет выглядеть авиаудар:

Так будет выглядеть авиаудар в игре



Схема действия авиаудара будет следующей:

  • Игрок проходит через trigger_multiple, расположенный на мосту
  • Trigger_multiple активирует multi_manager
  • Multi_manager активирует все объекты, создающие эффект авиаудара
Схема действия авиаудара




1. Trigger_multiple

Итак, начинаем с создания объекта trigger_multiple. Его мы разместим на середине моста (см. рис. ниже). Когда игрок пройдет через этот триггер, будет активирован multi_manager, расположенный чуть выше.

Создаем trigger_multiple



Trigger_multiple (активирует объект multi_manager)
Target: jet_multi (сюда мы записали имя multi_manager'а)
Delay before trigger: 5 (время до активации объекта, в секундах)
Delay before reset: 360 (время, в течении которого триггер не может быть активирован повторно)



2. Multi_manager

Multi_manager, как видно из схемы, представленной выше, активирует 4 объекта: сначала звук самолета, затем запускает сам самолет, после этого «запускает» встряску земли и, в конце концов, «подрывает» разрушаемые ящики.

Свойства multi_manager'а выглядят так:

Свойства объекта multi_manager



«Targetname» при отжатой кнопке «Smart Edit» означает имя объекта multi_manager, т.е. jet_multi. Ниже имени мы видим активацию звука jet_sound через 0.1 сек, активацию самолета jet через 1.0 сек, активацию встряски jet_shake через 1.0 сек и активацию взрыва ящиков jet_crate через 1.9 сек. Время активации всех этих объектов рассчитано с учетом скорости передвижения самолета (ведь необходимо взорвать ящики, когда самолет будет пролетать над ними).


3. Звук самолета Ambient_generic

Самым первым объектом активируемым через 0.1 секунды является звук самолета. Естественно, это будет объект ambient_generic. Вот как выглядят его свойства и флаги:

Ambient_generic (звук самолета)
Name: jet_sound (имя звука)
Path: ambience/jetflyby1.wav (путь к звуку, это стандартный звук самолета)
Volume: 10 (громкость звука, максимальная)

Флаги:

Play Everywhere: играть по всей карте
Start Silent: в начале раунда звук молчит
Not Toggled: играет 1 раз (затем его необходимо активировать повторно)



4. Запуск самолета Func_door

Для опытного маппера энтити-объекты не более, чем просто объекты, облажающие определенным набором свойств. Действительно, не стоит думать, что объект func_door может быть только дверью, исходя из его названия. Если мы раскрасим дверь подходящими текстурами и расположим горизонтально, то вполне можем получить платформу или простенький лифт.

Так и в нашем случае дверь будет выполнять отличную от ее прямого назначения функцию — она будет самолетом :) В нашей тестовой карте мы использовали текстуры самолета из карты de_torn.

На картинке ниже видно, что самолет у нас будет плоским прямоуголным брашем (а впоследствии объектом func_door), повернутым на угол 45° в направлении своего движения.

Создаем самолет из func_door и определяем направление его полета



Окрасив браш текстурой самолета, разверните его на виде сверху (2D-top). Рекомендуем использовать ровные значения: 30°, 45°, 60° и т.д.

Превратите браш в объект func_door и выставьте в параметре «Angle» точно такой же угол, на который развернули самолет. В нашем случае самолет развернут на угол 45°, поэтому и в параметре «Angle» мы указали 45°. Важно также установить параметр Delay before close: -1, чтобы самолет мог пролететь только 1 раз за раунд, т.е. долетев до конечной точки, он останется там до конца раунда.

Чтобы синие части текстуры стали в игре прозрачными, необходимо поставить следующие режимы:
Render Mode: Solid, FX Amount: 255.

Следующим важным параметром самолета (func_door) является «Lip», определяющий расстояние, на которое переместится самолет. По умолчанию самолет переместится на расстояние, равное своей длине (ширине). Расстояние при использовании параметра «Lip» высчитывается так: расстояние = длина самолета - Lip.

Расстояние определяем на 2D-виде сверху. Так как угол, под которым летит наш самолет, равен 45°, то расстояние легко высчитать по диагонали координатной сетки. Если у нас сетка разбита на квадраты 128х128 юнитов, то по теореме Пифагора (Вы же ее помните? :) длина диагонали получается равной ~180 юнитов. Как Вы конечно же понимаете, теорема Пифагора применима к любому прямоугольному треугольнику, независимо от того, одинаковы катеты A и B или нет.

Расстояние для самолета определяем по теореме Пифагора



Считаем количество квадратов с размером 128х128 юнитов от начального до конечного положения самолета. У нас получилось 9 квадратов, а значит расстояние равно ~1600 юнитов. Именно поэтому в параметр «Lip» мы записали значение «-1600» («минус», т.к. отрицательное значение увеличивает расстояние полета. Действительно, в формуле: расстояние = длина самолета - Lip перед параметром «Lip» стоит минус, а минус на минус дает плюс).

Func_door (самолет)
Angle: 45° (направление полета самолета, определяется на 2D-виде сверху)
Name: jet (имя самолета)
Render mode: Solid (вместе с fx amount: 255 делает синие части самолета прозрачными)
FX Amount: 255
Speed: 1600 (скорость самолета)
Lip: -1600 (дополнительное расстояние, на которое летит самолет; значение никак не связано со скоростью, просто цифры совпали)
Wait before close: -1 (остается в конечной точке до конца раунда, затем возвращается на место)



5. Встряска Env_shake

Данный спецэффект отсутствует на карте de_torn, но мы решили немного усилить восприятие низко летящего реактивного самолета, поэтому добавили небольшое землетрясение при помощи объекта env_shake.

Env_shake (объект, вызывающий встряску карты)
Name: jet_shake
Amplitude 0-16: 2 (амплитуда колебаний, маленькая)
Duration (seconds): 3 (продолжительность встряски в секундах)
0.1 jerk, 255.0 = rumble: 2 (частота толчков; чем больше значение, тем чаще трясет)

Флаги:

GlobalShake: землетрясение действует по всей карте



6. Взрыв ящиков Func_breakable

Рядом с конечной точкой полета самолета создадим несколько ящиков и превратим их в func_breakable. На de_torn вместо ящиков используется крыша одного из домов. Самолет пролетает над крышей — раздается взрыв, и часть крыши разрушается.

Время активации ящиков func_breakable рассчитано с учетом скорости самолета и расстояния, на котором он находится от ящиков в начале раунда. Да, кстати, если Вы не знаете, то объекты func_breakable при активации разрушаются, а установив значение «Explode magnitude» мы добавляем к простому разрушению еще и взрыв определенной силы. Внешне все выглядит, как будто самолет сбросил бомбы на ящики.

Func_breakable (взрывающие ящики)
Strenght: 1 (прочность, можно оставить по умолчанию)
Material type: Wood (тип материала, дерево)
Explode magnitude: 170 (сила взрыва, довольно большая)

Флаги:

Only Trigger: взрывается только от активации (игрок разрушить ящики не может)



Заключение

При создании самолета желательно разместить его так, чтобы он не был виден с земли, иначе может получиться, что самолет будет неподвижно висеть над каким-нибудь домом и ждать, когда его «вызовут» :) На нашей карте самолет находится очень низко над горами, поэтому с земли незаметен. Игрок думает, что самолет вылетает из-за гор.

Также необходимо учитывать следующую особенность объекта func_door (самолета): в начале следующего раунда func_door всегда возвращается в исходное положение, т.е. Вы можете увидеть, как самолет задом летит в начальное положение. Зная эту особенность, не размещайте места рождения игроков под траекторией полета самолета, если Вы не хотите, чтобы они увидели этот довольно странный маневр :)


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


Share:
Keywords: