Проходя
Равенхольм, вы наверно не раз обращали внимание на ловушки,
расставленные по всему городу. В этом туторе я расскажу вам, как
сделать пилы, которые можно включить/выключить по нажатию на рычаг. Для
того чтобы было понятно, о чем идет речь, смотрим на скриншот ниже.
Ну
что приступим? Для начала создайте комнату, источник света и точку
старта игрока. Думаю, не стоит объяснять, как это сделать, ибо этот
тутор совсем не об этом. Создайте в центре карты энтитю prop_static,
зайдите в ее настройки (Alt+Enter) и в параметре World Model напишите:
models/props_c17/TrapPropeller_Engine.mdl. Это будет основание, на
котором будет крепиться пила. Главное не забудьте опустить его на
землю, чтобы пила не висела в воздухе. Теперь, когда основание для пилы
готово пришло время приступить к созданию самой пилы. Создайте энититю
prop_physics. Настройка prop_physics: Name: propeller World Model: models/props_c17/TrapPropeller_Blade.mdl Impact damage type: Sharp Уберите все галочки во вкладке Flags и расположите ее так, как показано на рисунке ниже.
Получилось? Отлично! Теперь давайте создадим рычаг. Создайте энтитю prop_dynamic. Настройка prop_dynamic: Parent: propeller_lever_model World Model: models/props_c17/TrapPropeller_lever.mdl Collisions: Not Solid Fade Scale: 0 Установите рычаг в том месте, где это предусмотрели разработчики (см. скриншот ниже).
Рычаг
почти готов, но ему не хватает одной очень важной функции, а именно
func_rot_button. Создайте браш с такими размерами 2w, 3l, 3h (буквы
возле цифр означают width - ширина, length - длина и height - высота) и
переведите его в энтитю (Ctrl+T) func_rot_button. Теперь нужно сделать
так, чтобы эта энтитя была невидимой в игре. Для этого залейте ее
текстурой nodraw. Настройка func_rot_button: Name: propeller_lever_model Speed: 100 Sounds: None (Silent) Delay Before Reset (-1 stay): 5 Distance (deg): 35 Ставим флаги: Reverse Dir Toggle Y Axis Устанавливаем ее так, как показано на скриншоте ниже:
Идем
дальше. Создайте браш размером 31w, 32l, 30h и залейте его текстурой
invisible. Затем переведите его в энтитю (Ctrl+T) func_button. После
того как мы перевели браш в энтитю в ее центре появиться кружочек.
Нужно поднять этот кружочек над ней, а ее саму переместить в центр
нашей смертоносной пилы. На скрине ниже я показал, куда именно нужно
переместить энтитю func_button и на какое расстояние поднять кружочек
из ее центра.
Настройка func_button: Name: propeller_lever Speed: 100 Sounds: lever or wheel: turn + move sqeek Delay Before Reset (-1 stay): 5 Minimum Light Level: 0 Ставим флаги: Don't move Toggle Use Activates Создайте новую энтитю phys_motor. Настройка phys_motor: Name: propeller_motor Rotation Speed: -1200 System Interia Scale: 5 Attached Object: propeller Уберите
все птички во вкладке Flags, кроме No world collision и расположите ее
как показано на картинке ниже. Красной стрелкой я указал, куда нужно
опустить кружочек из ее центра.
Следующим
шагом будет создание очередной энтити. Я понимаю, вы уже немного
устали, но результат того стоит, поверьте! Создайте энтитю phys_hinge. Настройка phys_hinge: Entity 1: propeller Friction: 30 Ставим флаги: No Collision until break Change mass to keep stable attachment to world Располагаем
эту энтитю над phys_motor (см. скриншот ниже). Красной стрелкой я
указал то место, куда нужно опустить кружочек из ее центра.
Создаем
еще две энтити - logic_navigation и point_angularvelocitysensor.
Сначала создайте энтитю logic_navigation. Все что нужно для нее
настроить, это параметр Navigation Entity: propeller. Теперь создайте
энтитю point_angularvelocitysensor. Настройка point_angularvelocitysensor: Target Entity Name: propeller Threshold Velocity: 1000 Расположите их, где-то рядом с пилой. Снова создайте две энтити. На сей раз это - logic_timer и logic_relay. Настройка logic_timer: Name: propeller_backfire_timer Start Disabled: Yes Use Random Time: Yes Minimum Random Interval: 3 Maximum Random Interval: 8 Refire Interval: 1 Для logic_relay нужно настроить всего один параметр Name: propeller_backfire_rl Ну,
вот мы и подошли к заключительно части данного тутора. Теперь остается
всего ничего добавить звуки и outputs. Создайте четыре ambient_generic
и для удобства поставьте их один над другим. Начнем настройку с самого
верхнего. Настройка первого ambient_generic: Name: propeller_spindown_wav Sound Name: Town.d1_town_01_spindown Max Audible Distance: 100 Настройка второго ambient_generic: Name: propeller_spinning_wav Sound Name: Town.d1_town_01_spin_loop Max Audible Distance: 210 Нужно оставить всего один флаг - Start Silent Настройка третьего ambient_generic: Name: propeller_spinup_wav Sound Name: Town.d1_town_01_spinup Max Audible Distance: 120 Настройка четвертого ambient_generic: Name: propeller_backfire_wav Sound Name: Town.d1_town_01_sputter1 Max Audible Distance: 210 Теперь давайте правильно расположим их на нашей карте. Как? Смотрим скриншот ниже:
Настраиваем Outputs. Ну,
вот теперь, когда на карте созданы и настроены все энтити и все звуки,
пришло время заняться настройкой outputs. На самом деле в этом нет
ничего сложного, просто взгляните на скриншоты ниже и повторите все
тоже самое на своей карте со своими энтитями. Начнем, пожалуй, с энтити
func_button. Outputs func_button:
Outputs point_angularvelocitysensor:
Outputs logic_timer:
Outputs logic_relay:
Вот
вроде и все. Хотя нет, на всех картах в Равенхольме возле каждой пилы
есть еще и так называемые trigger_playermovement. Что это такое и для
чего они нужны? А это такой триггер в зоне действия, которого игрок не
может встать. Довольно удобно, когда вы включаете пилу и не боитесь что
случайно отжав клавишу "присесть" моментально отправитесь к праотцам.
Сделать такой триггер довольно просто. Сначала нужно создать браш с
подходящей высотой и шириной, а потом перевести его в энтитю
trigger_playermovement. Настраивать ничего не нужно, сразу же после
перевода браша в энтитю вы получите рабочий триггер.