Проходя Равенхольм, вы наверно не раз обращали внимание на ловушки, расставленные по всему городу. В этом туторе я расскажу вам, как сделать пилы, которые можно включить/выключить по нажатию на рычаг. Для того чтобы было понятно, о чем идет речь, смотрим на скриншот ниже. Ну что приступим? Для начала создайте комнату, источник света и точку старта игрока. Думаю, не стоит объяснять, как это сделать, ибо этот тутор совсем не об этом. Создайте в центре карты энтитю 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 |