Games-source.narod.ru - Всё об играх на движке Source™

Учебники

Вращающаяся ловушка из 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
Устанавливаем ее так, как показано на скриншоте ниже:

Идем дальше. Создайте браш размером 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:

point_angularvelocitysensor

Outputs logic_timer:

Outputs logic_timer

Outputs logic_relay:

Outputs logic_relay

Вот вроде и все. Хотя нет, на всех картах в Равенхольме возле каждой пилы есть еще и так называемые trigger_playermovement. Что это такое и для чего они нужны? А это такой триггер в зоне действия, которого игрок не может встать. Довольно удобно, когда вы включаете пилу и не боитесь что случайно отжав клавишу "присесть" моментально отправитесь к праотцам. Сделать такой триггер довольно просто. Сначала нужно создать браш с подходящей высотой и шириной, а потом перевести его в энтитю trigger_playermovement. Настраивать ничего не нужно, сразу же после перевода браша в энтитю вы получите рабочий триггер.

Статья http://source-inside.ru


 

  Rambler's Top100 bigmir)net TOP 100
Используются технологии uCoz