Добавил: love makeserver|20 сен 2011|Просмотров: 3 126|Комментариев: 0
0
А вот так будет выглядеть авиаудар в игре:
Схема работы авиаудара будет такой (смотрите картинку ниже):
Игрок проходит через trigger_multiple, расположенный на мосту Trigger_multiple активирует multi_manager Multi_manager активирует все объекты, создающие эффект авиаудара
1. Trigger_multiple Что же, начнём с создания брашевого энтити-объекта trigger_multiple. Его мы расположим посередине моста (смотрите картинку ниже). Когда игрок пройдет через данный триггер, будет активирован multi_manager, расположенный чуть выше (местоположение его значения не имеет).
Trigger_multiple (активирует объект multi_manager) Target: jet_multi (здесь мы указали название multi_manager'а) Delay before trigger: 5 (время до активации multi_manager'а, в секундах) Delay before reset: 360 (время в секундах, в течении которого триггер не может быть активирован повторно)
2. Multi_manager
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
Самым 1-ым энтити-объектом запускаемым через 0.1 секунды является звук самолета. Конечно, это будет энтити-объект ambient_generic. А вот как выглядят его параметры и флаги:
Ambient_generic (звук самолета) Name: jet_sound (название объекта) Path: ambience/jetflyby1.wav (путь к звуку, это стандартный звук самолета) Volume: 10 (громкость звука, максимальная) Флаги:
Play Everywhere: играть по всему уровню Start Silent: в начале нового раунда звук не играется Not Toggled: играет один раз (затем его нужно запускать ещё раз)
. Запуск самолета Func_door
Для профессионального создателя карт энтити-объекты не более, чем просто объекты, обладающие определенными свойствами. В самом деле, не стоит думать, что энтити-объект func_door может быть только дверью исходя из названия. Если раскрасить дверь подходящими текстурами и расположить горизонтально, то вполне можем получить платформу или простой лифт.
Так и в нашем случае, дверь будет выполнять отличную от её прямого назначения функцию — она будет самолетом :-) В нашем тестовом уровне мы использовали текстуры самолета из de_torn.
На рисунке ниже видно, что самолет у нас будет плоским прямоугольным брашевым энтити-объектом func_door, повернутым на угол 45 градусов в направлении своего движения.
Раскрасив браш текстурой самолета, поверните его на виде сверху (2D top). Советуем использовать ровные значения: 30 градусов, 45 градусов, 60 градусов и т.п.
Превратите браш нажатием комбинации клавиш [Ctrl-T] в энтити-объект func_door и выставьте в параметре «Angle» точно такой же угол, на который развернули самолет. В нашем случае самолет повёрнут на угол 45 градусов. Важно также указать параметр Delay before close: -1, чтобы самолет мог произвести авиаудар только один раз за раунд, то есть долетев до конечной точки своего пути, он останется там до конца раунда, чтобы с началом нового раунда вернуться в изначальную позицию.
Чтобы синие части текстуры стали в игре невидимыми, нужно указать такие режимы отображения: Render Mode: Solid, FX Amount: 255.
Следующим значимым параметром нашего будущего самолёта (func_door) является «Lip», определяющий расстояние, на которое переместится самолет. Стандартно самолёт пролетит расстояние, равное своей длине (ширине). Дистанция при использовании параметра «Lip» вычисляется так: дистанция = длина самолета - Lip.
Эту дистанцию определяем на двумерном виде сверху (2D top). Так как градус, под которым летит наш самолет, равен 45, то расстояние легко высчитать по диагонали координатной сетки. Если у нас сетка разбита на квадраты 128х128 юнитов, то по теореме Пифагора (вы же её помните? :-) длина диагонали получается равной примерно 180 юнитов. Как Вы конечно же понимаете, теорема Пифагора применима к любому прямоугольному треугольнику, независимо от того, одинаковы катеты A и B или нет.
читаем число квадратов с размером 128х128 юнитов от начального до конечного положения самолета. У нас получилось 9 квадратов, а значит дистанция равна примерно 1600 юнитов. Именно поэтому в параметр «Lip» мы вбили значение «-1600» («минус», так как отрицательное значение увеличивает дистанцию полёта. В самом деле, в формуле: дистанция = длина самолета - Lip перед параметром «Lip» стоит минус, а минус на минус дает плюс).
Func_door (самолет) Angle: 45 градусов (направление полета самолета, определяется на двумерном виде сверху — 2D top) 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 (взрывающиеся ящики) Strenght: 1 (прочность ящиков, можно оставить по умолчанию) Material type: Wood (тип материала, дерево) Explode magnitude: 170 (сила взрыва, значительная)
Флаги:
Only Trigger: взрывается только от активации (игрок расстрелять ящики не может)
Заключение
При изготовлении данного самолета рекомендуется размещать его так, чтобы он не был виден с земли, иначе может получиться, что самолёт будет висеть над каким-либо домом и ждать, когда его активируют :-)
Также нужно учитывать следующую особенность энтити-объекта func_door: в начале следующего раунда func_door всегда возвращается в начальное положение, то есть можно увидеть, как самолет задом летит в изначальное положение. Зная эту особенность, не размещайте респауны рядом с траекторией полёта самолета, если вы не хотите, чтобы игроки увидели сей казусный маневр :-)
в архиве карта-пример в форматах BSP и RMF.
Скачать:
Внимание! У Вас нет прав для просмотра скрытого текста.