Вращающаяся ловушка из Ravenholm
Проходя Равенхольм, вы
наверно не раз обращали внимание на ловушки, расставленные по всему
городу. В этом туторе я расскажу вам, как сделать пилы, которые можно
включить/выключить по нажатию на рычаг. Для того чтобы было понятно, о
чем идет речь, смотрим на скриншот ниже.
Ну что приступим? Для начала создайте комнату, источник света и точку
старта игрока. Думаю, не стоит объяснять, как это сделать, ибо этот
тутор совсем не об этом. Создайте в центре карты энтитю 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 Устанавливаем ее так, как показано на скриншоте ниже: http://www.source-inside.ru/images/mapping/saw_trap/image_04.jpg
Идем дальше. Создайте браш размером 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. Настраивать ничего не нужно, сразу же после
перевода браша в энтитю вы получите рабочий триггер.
Источник: http://www.source-inside.ru/index.php?id=166 |