Граємо в Source SDK, тригери

Ознайомившись з нашим першим уроком Source SDK, ви вже повинні розібратися з основними функціями Hammer: вміти використовувати блоки для створення приміщень, змінювати текстури та розміщувати моделі на карті. Однак, ваш рівень все ще залишає бажати кращого, тому почнемо вивчати тригери, щоб додати інтерактивності. Далі про те, як створити тригер для запуску та зупинення подій, а також для зміни властивостей об'єктів.

source

Тригери – це особливі невидимі блоки, які «спрацьовують» при зіткненні з гравцем чи іншим об'єктом, викликаючи певний ефект або надсилаючи сигнал іншому об'єкту. Почнемо із найпростішого – створимо тригер trigger_once. Спочатку вам знадобиться проста кімната та коридор, можете використовувати карту, що залишилася з минулого уроку.

Створення тригера

Поряд із зображенням поточної текстури натисніть кнопку Browse і у фільтрі наберіть "tools". Ви отримаєте список спеціальних матеріалів, необхідних різноманітних ефектів. Більшість назв говорять самі за себе. Виберіть матеріал toolstrigger. Тепер використовуйте Block Tool для створення блоку цього матеріалу, що перекриває прохід в коридор. Поки що це статичний блок без ефектів. Щоб наділити його функціями, необхідно прив'язати блок до об'єкта. Найпростіше це зробити, виділивши його за допомогою Selection Tool і натиснувши Ctrl+T, або клацнути правою кнопкою миші на 2D-виді і вибрати Tie To Entity.

Відкриється вікно Object Properties. "Блоковий об'єкт", яким за умовчанням був ваш блок, зміниться на func_detail, дуже корисний об'єкт, що дозволяє наповнити карту дрібними деталями, що не перекривають огляд, але про це нам зараз замислюватися ні до чого. У списку Class виберіть trigger_once і натисніть Apply.

граємо

Давайте ближчепознайомимося із цим вікном. Перша вкладка, Class Info, містить базові налаштування об'єкта. Буде непоганою ідеєю призначити об'єкту ім'я, яким до нього будуть звертатися інші об'єкти, але в нашому випадку ім'я не стане в нагоді. Filter Name – це зручний спосіб відсіювати об'єкти, що ведуть спрацьовування тригера. Наприклад, коли гравцеві потрібно знайти фізичний об'єкт, на зразок шестерні або батарейки, тригер можна використовувати для виявлення моделей з необхідним ім'ям. Переходимо до двох наступних вкладок: Outputs (вихідні сигнали) та Inputs (вхідні сигнали). Зараз у них порожньо, але ми сюди ще повернемося, щоб змусити тригер щось зробити. На вкладці Flags містяться додаткові опції об'єкта.

Тепер потрібно призначити тригеру якусь дію. Як приклад включимо програвання музики, коли гравець проходить коридором. Об'єкт для відтворення звуку в Source називається ambient_generic, давайте його створимо. Об'єкт потрібно розміщувати там, звідки має виходити звук. Подвійним кліком на об'єкті на 3D-виді відкриємо вікно Object Properties. Корисно буде призначити об'єкту відповідне ім'я, на кшталт corridor_sound. Потім виберіть поле Sound Name і натисніть Browse, щоб вибрати звук. Знову ж таки, можна використовувати фільтр, щоб звузити кількість варіантів. Будьте уважними, деякі звуки налаштовані на автоматичне повторення. Про решту опцій нам тут турбуватися не треба, але на вкладці Flags можна знайти деякі корисні налаштування.

тригери

Вхідні та вихідні сигнали

Тепер все, що нам залишилося зробити, це поєднати тригер зі звуком. Повертаємося до властивостей trigger_once на вкладку Outputs і тиснемо Add. Тут доведеться заповнити кілька полів, але не переживайте, все очевидно. У першому полі вказуємо, що має викликативихідний сигнал, у разі вибираємо OnTrigger. Target entity – це об'єкт, на який спрямований вихід, він називається corridor_sound. У списку Via this input можна подивитися все, що здатний зробити цільовий об'єкт. Нам потрібний PlaySound. Поле Parameter override буде недоступним, тому що тут нам не потрібні додаткові налаштування. За бажанням у наступному полі можете додати затримку між активацією тригера та спрацювання ефекту. Натискаємо Apply та все! Можете йти на вкладку Inputs властивостей об'єкта ambient_generic і побачити вхідний сигнал від свого тригера. Якщо ви скомпілюєте карту і пройдете коридором, ви почуєте заданий звук.

тригера

За таким принципом у Source створюються практично будь-які комплексні події. Усі вони управляються поєднанням об'єктів з тригерами та його вихідними сигналами. Застосовуючи об'єкти logic_ і math_ можна створювати події, лічильники, таймери і багато іншого. У Source будь-який об'єкт управляється вхідними та вихідними сигналами.

Інші приклади

Автоматичні двері

граємо

У цьому прикладі блоковий об'єкт func_door управляється тригером trigger_multiple. Щоразу, коли гравець стосується тригера, двері відчиняються. Коли гравець залишає зону дії тригера, вмикається вихідний сигнал OnEndTouch і двері зачиняються.

Завершення гри

граємо

Це простий спосіб належного завершення гри на карті. Коли ви перемагаєте боса (вбиваєте хедкраба), його смерть включає logic_relay, об'єкт, здатний контролювати кілька вихідних сигналів. Це, у свою чергу, запускає вихідний сигнал об'єкту env_fade, що затемнює екран. Також запускається game_text, що відображає повідомлення про перемогу. І, нарешті, після затримки спрацьовує об'єктpoint_clientcommand. Цей об'єкт активує команди консолі, у разі команду disconnect, яка відправляє гравця у головне меню.