Школа Counter-Strike - Часть 16.3 Разбиваемые камеры

Мир Counter-Strike

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


Учебник по созданию карт
Часть 16. Камеры.

Часть 16.3 Разбиваемые камеры

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

- func_door
- func_button
- func_breakable
- info_target
- trigger_camera
- trigger_changetarget

Материал достаточно сложный, по крайней мере, новичку будет трудно. Но, поверьте, написать его было тоже не так-то просто :-) Если мы вас еще не спугнули, то можем приступать. Сейчас мы создадим довольно эффектную фишку.

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


Что будем делать:

Сделаем где-либо в уровне монитор (энтити-объект func_button, то есть обычную кнопку), нажав на который клавишой «E», игрок увидит изображение с камеры (энтити-объекта trigger_camera).

Так как сама камера (trigger_camera) является точечным энтити-объектом, то в игре она будет совершенно прозрачна. Нам же нужно создать разбиваемую камеру, то есть видимый объект, поэтому рядом с настоящей, но прозрачной камерой мы сделаем энтити-объектfunc_breakable, который будет как бы олицетворять нашу камеру (материализовывать).

Игрок будет думать, что видимая камера (func_breakable) — это и есть камера, с которой он наблюдает изображение, хотя, конечно же, функцию камеры выполняет расположенный рядом объект trigger_camera.

Когда игрок разобъет видимую камеру (func_breakable), нужно прекратить работу прозрачной настоящей камеры (trigger_camera). Мы это сделаем переводом цели кнопки-монитора с камеры trigger_camera на какой-либо другой энтити-объект. После разбиенияfunc_breakable, при нажатии на монитор картинка с камеры выводиться не будет, так как монитор больше не активирует камеру. Данную фишку можно реализовать при помощи точечного энтити-объекта trigger_changetarget, который способен поменять параметр «Target» любому объекту.

Ну, и последнее. Нужно, чтобы в начале каждого раунда функции кнопки-монитора (func_button) восстанавливались, то есть кнопка опять была бы «нацелена» на энтити-объект trigger_camera и активировала бы его. Это опять же реализуется при помощи объектаtrigger_changetarget, только теперь мы вернем монитору первоначальное значение параметра «Target». Монитор снова работает, пока его не разобьют вновь.


Схема работы разбиваемой камеры

Чтобы было попроще всё это понять, мы составили схему работы разбиваемой камеры (смотрите картинку ниже). В схему входят 7 энтити-объектов. Сейчас мы ещё раз повторим сказанное выше, но уже с помощью схемы.

Что же, главным на данной схеме является игрок. Его мы обозначили оранжевым кружком.

Схема работы разбиваемой камеры из 7 энтити-объектов


Рассмотрим среднюю линию схемы, состоящую из 3-х энтити-объектов (func_buttontrigger_camerainfo_target).
  • Игрок подходит к стене и нажимает клавишей «E» на кнопку-монитор (func_button);
  • Кнопка-монитор активирует камеру (trigger_camera);
  • Камера демонстрирует игроку определённый участок уровня. «Взгляд» камеры смотрит в сторону энтити-объекта info_target;
Теперь рассмотрим верхнюю линию схемы с двумя объектами (func_breakable и trigger_changetarget).

  • Игрок разбивает предмет, изображающий камеру, то есть func_breakable;
  • Func_breakable активирует объект trigger_changetarget, который «перенацеливает» кнопку-монитор с trigger_camera на func_door (синяя стрелка уходит вниз-вправо);
Так как кнопка больше не вызывает камеру (цель задана другая; теперь кнопка активирует невидимую дверь), то игрок, нажимая на неё, ничего не видит (камера разбита). Теперь при нажатии на кнопку будет открываться невидимая дверь, но это-то нам и необходимо и абсолютно никак не мешает.

Нижняя линия схемы (энтити-объекты func_door и trigger_changetarget).

Как мы уже говорили в начале материала, важно понять, что энтити-объекты можно использовать не по назначению. В нашем случае мы будем использовать дверь не по своему прямому назначению. Наша дверь не будет находиться в каком-либо дверном проёме, мало того она будет совершенно невидимой, через неё насквозь можно будет проходить (двери как бы и нет), и она будет выполнять функцию триггера (активировать объект).

Важно! В параметрах двери (func_door) мы укажем следующий параметр delay before close: -1, таким образом дверь будет открываться только 1 раз в каждом раунде. Дальше мы будем использовать тот факт, что всякая открытая дверь в начале следующего раунда автоматом закрывается.

При закрытии (то есть в самом начале каждого раунда) дверь будет активировать еще 1 — второй — объект trigger_changetarget, который обратно «перенацелит» кнопку-монитор на камеру (trigger_camera), и игрок снова, если захочет, сможет понаблюдать, что показывает камера, пока её не разбили.

/*   Если до этих пор вам все понятно — наши поздравления! Вы сделали громадный шаг на пути к профессиональному созданию карт! Осилить всё это сразу сможет не любой новичёк. Но зато когда он допетрит, в чём фишка :-), то почувствует, как у него развязываюся руки и он может крутить-вертеть параметрами энтити-объектов как хочет, добиваясь нужной цели.   */


А вот и параметры всех задействованных энтити-объектов:

1. Кнопка-монитор, расположенная на стенке. При нажатии на неё игроком, она активирует камеру trigger_camera и игрок видит изображение с неё.

Кнопка-монитор, активирующая камеру trigger_camera


Name: monitor_button (название кнопки)
Targetted object: camera1 (в начале раунда кнопка вызывает камеру)
Delay before reset: 0 (кнопку можно нажимать как угодно часто, без задержек)
Delay before trigger: 0 (кнопка вызывает камеру мгновенно, без задержки)

Флаги:

Don't move: кнопка-монитор не вжимается в стенку при нажатии (так реалистичнее)


2. Камера (trigger_camera). Камера нацелена на объект info_target и передает изображение игроку, когда тот нажимает кнопку-монитор.

Камера (trigger_camera) и материализующий ее в игре объект func_breakable


Name: camera1 (имя камеры)
Target: target1 (имя объекта info_target)
Hold time: 10 (время в секундах, в течении которого камера передает изображение)


3. Визуальная (материальная) часть камеры (энтити func_breakable). Разбивая func_breakable (смотрите картинку выше), мы переводим кнопку-монитор с камеры на прозрачную дверь, выполняющую функцию триггера.

Target on break: change_door (название первого объекта trigger_changetarget)
Strength: 75 (сила, прочность камеры, около трёх выстрелов из винтовки)
Material type: metal (тип материала камеры, в нашем случае металл)


4. Цель для камеры (точечная энтити info_target). В сторону данной энтити будет нацелен «взгляд» камеры.

Name: target1 (название цели)

В сторону этого объекта будет направлен "взгляд" камеры



5. Объекты, управляющие кнопкой-монитором (trigger_changetarget). Данные энтити-объекты «перенацеливают» кнопку-монитор с камеры на прозрачную дверь (при разбиении камеры игроком) и, наоборот, — с двери на камеру в начале каждого раунда.

Секретная невидимая в игре дверь (func_door) и два объекта trigger_changetarget, управляющие параметром Target кнопки-монитора


5.1 Первый trigger_changetarget. Переводит кнопку с камеры на дверь.

Name: change_door (имя первого триггера);
Target: monitor_button (здесь мы указываем название кнопки-монитора, так как именно ей мы изменяем параметр «Target»);
New target: secret_door (здесь указываем имя новой мишени для кнопки-монитора);

5.2 Второй trigger_changetarget. Переводит кнопку-монитор с двери обратно на камеру (trigger_camera) в начале каждого раунда.

Name: change_camera (имя второго триггера);
Target: monitor_button (здесь мы указываем имя кнопки-монитора, так как именно ей мы меняем параметр Target);
New target: camera1 (здесь указываем имя первоначальной цели для кнопки-монитора)


6. Секретная дверь (func_door). Прозрачная дверь является у нас энтити-объектом, на который перенацеливается действие кнопки-монитора, после разрушения камеры, а также дверь при своем закрытии в начале каждого раунда, запускает 2-ой trigger_changetarget.

Размеры, положение и текстура для закрашивания двери не важны! Дверь в нашем случае не есть собственно дверь.

Name: secret_door (название скрытой двери);
Render mode: texture (данный режим отображения совместно со следующим fx amount: 0 делает дверь совершенно невидимой);
FX Amount: 0 (данный режим отображения совместно с предыдущим делает дверь совершенно невидимой независимо от текстуры, в которую она окрашена);
Delay before close: -1 (нужно, чтобы дверь не закрывалась до начала следующего раунда);
Fire on Close: change_camera (данный энтити-объект trigger_changetarget будет активирован при закрытии двери, в нашем случае в начале каждого раунда)

Флаги:

Passable: нужно отметить, чтобы игроки не задевали невидимую дверь.

Вот и всё! Надеемся, что вы разберетесь со данной хитрой штуковиной, так как этот материал даёт стандартный набор знаний, открывающих дорогу в мир профессионального маппинга!


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

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

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