Школа Counter-Strike - Часть 20.1 Авиа удар на карте de_torn

Мир Counter-Strike

Приветствую Вас Гость | RSSГлавная | Часть 20.1 Авиа удар на карте de_torn | Регистрация | Вход
Главное меню
Теория CS
Видео школа CS 1.6
Скачать
Магазин
Мастерская
Арт-Cs
Новые видео уроки CS 1.6Новые материалы и файлы


Учебник по созданию карт
Часть 20. Продвинутый маппинг.

Часть 20.1 Авиа удар на карте de_torn

Из данного материала вы узнаете о том, как сделан авиаудар на de_torn.
От вас потребуется знание следующих энтити-объектов:

- trigger_multiple
- multi_manager
- ambient_generic
- func_door
- func_breakable
- env_shake

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

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


Схема работы авиаудара будет такой (смотрите картинку ниже):

  • Игрок проходит через 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 (время до активации multi_manager'а, в секундах)
Delay before reset: 360 (время в секундах, в течении которого триггер не может быть активирован повторно)


2. Multi_manager

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: играет один раз (затем его нужно запускать ещё раз)


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

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

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

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

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


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

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

Чтобы синие части текстуры стали в игре невидимыми, нужно указать такие режимы отображения:
Render Mode: SolidFX 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. На карте de_torn вместо ящиков используется крыша 1-ого из домов. Когда самолёт пролетает над крышей — раздается взрыв, и часть крыши разрушается.

Время активации (взрыва) ящиков func_breakable рассчитано с учётом скорости самолета (1600 юнитов в секунду) и дистанции, на которой он расположен от ящиков в начале раунда. Да, кстати, если вы не знаете, то энтити-объекты func_breakable при активации разрушаются, а установив параметр «Explode magnitude» мы добавляем к обычному разрушению еще и взрыв какой-либо силы. 

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

Флаги:

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


Заключение:

При изготовлении данного самолета рекомендуется размещать его так, чтобы он не был виден с земли, иначе может получиться, что самолёт будет висеть над каким-либо домом и ждать, когда его активируют :-)

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




 
Форма входа
Гость

Здравствуйте Гость! Пожалуйста зарегестрируйтель или зайдите под своим ником.biggrin
Поиск по сайту
Облако тегов
Тактика в CS 1.6
Опрос
Как Вы нас нашли?
Всего ответов: 481
Материалы
Comments: 49
Forum: 12/45
News: 6
Downloads: 250
Guestbook: 56
Кто онлайн

Онлайн всего: 5
Гостей: 5
Пользователей: 0
uCoz
При копировании материалов активная ссылка на world-cs.net обязательна © 2016