Працюючі сходи - valve developer community
У всіх іграх Source є сходи (крім Team Fortress 2 і Portal 2. де їх немає), що складаються з моделі або Браша, і системи невидимих ентіть, розташованих поруч. Ці невидимі ентіті і створюють видимість того, що гравець підіймається по моделі / брашу сходи.
Видима частина сходів
Для її створення ви можете використовувати
- ентітей prop_static з моделлю сходи (наприклад, models \ props_c17 \ metalladder001.mdl), або
- Браш з текстурою сходи (наприклад, metal / metalladder001a).
система підйому
Принцип роботи системи підйому залежить від гри, для якої вона призначена. Сходи в Half-Life 2 і Half-Life 2: Deathmatch створюються трохи не так, як в ранніх іграх, вони стали зручніше для дизайнерів карт і гравців, а сходи в Counter-Strike: Source і Day of Defeat: Source реалізовані також, як в старих іграх. Матеріал зі створення сходів для Counter-Strike: Source і Day of Defeat: Source, див. Нижче.
Ентіті сходи для Half-Life 2 / Half-Life 2 Deathmatch
Спочатку потрібно визначитися з розміром сходи. Це можна зробити двома способами: за допомогою ентіті func_useableladder. або застарілої func_ladderendpoint (яка коротко описана нижче для розуміння роботи старих карт).
Ентітей func_useableladder розділяється на дві під-ентіті: початкову і кінцеву точки (див. Рис. 1a). Їх позиції можна задавати як в поле значення, так і шляхом перетягування гуртка при виділенні ентіті (див. Рис. 1b). Це робиться у вікні 2D-виду. Початок і кінець драбини можуть бути довільної орієнтації і довжини (см. Рис. 1c). Просто тягніть ці точки туди, де повинна розташовуватися сходи.

Мал. 1a - Точки сходи (використовуються дві func_ladderendpoint s)
Переконайтеся, що кінцеві точки сходи не стосуються її видимого Браша, і знаходяться на відстані в парі одиниць від нього (а таже будь-якого іншого Браша або моделі), інакше частина сходів може не працювати.
Сьогодні застаріла сутність func_ladderendpoint складається лише з однієї кінцевої точки. Розмір сходи створюється шляхом скріплення двох func_ladderendpoints, які вказуються в властивості.
точки сходу

Мал. 2 - Точки сходу
Також, ви можете задати точки сходу зі сходів (див. Рис. 2). Вони створюються за допомогою ентіті info_ladder_dismount. Під час лазіння гравець може зійти, натиснувши клавішу використання (зазвичай так робиться, коли сходи вище двох поверхів). В даному ж випадку гравець сходить сам, просто досягнувши однієї з точок. Ви можете використовувати кілька маркерів info_ladder_dismount, щоб задавати більше напрямків сходу зі сходів.
Щоб уникнути можливої плутанини між сусідніми сходами, кожна info_ladder_dismount має параметр, званий LadderName. який пов'язує точку з конкретною сходами.
Як і у випадку з сходами, точки сходу не повинні перетинатися з геометрією карти.
польові випробування
Після того, як ви створили сходи, то можете скомпілювати карту і протестувати її. Якщо хочете, то в грі можна побачити ентіті сходів разом з налагоджування, ввівши в консолі sv_showladders 1. а потім завантаживши або перезагрузив потрібну карту (ввівши restart). Будуть показані всі початкові і кінцеві точки сходів (ентіті func_useableladder і func_ladderendpoint), а також точки сходу (ентіті info_ladder_dismount) (Див. Рис. 3a). що допоможе вам визначити, чи правильно налаштовані ці ентіті, чи перетинаються вони з твердої геометрією або моделями сходів (див. Рис. 3b). а також з'єднуються чи ентіті func_ladderendpoint один з одним.

Мал. 3a - Візуалізація в грі (sv_showladders 1)

Мал. 3b - Кінцева точка застрягла в підлозі
Як сходи працює в грі
Найбезпечніший спосіб піднятися сходами в Half-life 2 - це підійти до її невидимою зоні, і в межах досяжності натиснути клавішу використання. Це автоматично поставить гравця на сходи. (Якщо ж просто ходити біля сходів, то є великий ризик впасти.)
Щоб зійти зі сходів, ви завжди можете зістрибнути або натиснути клавішу використання. Якщо біля сходів є info_ladder_dismounts, ви легко поспішає на її кінцях.
Сходи для Counter Strike: Source, Day of Defeat: Source і Garry's Mod
Перед об'єктом / брашем, який повинен бути сходами, як можна ближче намалюйте ще один браш, але так, щоб вони не торкалися. Переконайтеся, що ширина / висота поверхні відповідає об'єкту-сходах. Покрийте цей браш матеріалом tools / toolsinvisibleladder і перетворіть в ентітей (CTRL + T). У діалозі Object Properties виберіть func_ladder. Тепер у вас є поверхня-сходи в передній частині об'єкта / Браша.

Мал. 4 - func_ladder з текстурою tools / toolsinvisibleladder перед сходами prop_static.
Коли ви стоїте на сходах в CS: S, точність вашої стрільби значно знижується.
Подібні сходи використовуються в Half-Life 1, але вони покриті текстурою AAATRIGGER замість tools / toolsinvisibleladder.
Сходи для Counter Strike: Global Offensive
Сходи для Left 4 Dead Left 4 Dead 2
Читайте наступні керівництва по створенню сходів для Left 4 Dead Left 4 Dead 2:
оптимізація сходів
За замовчуванням, моделі сходів використовують VPhysics. щоб забезпечити точність дотику, але іноді цього не потрібно. У багатокористувацьких і важких картах використання моделей з VPhysics забирає дорогоцінні ресурси, і щоб уникнути лагов, хорошою фізикою можна пожертвувати. Ось кілька відмінних способів, щоб розвантажити ресурси:
- Якщо це пряма сходи для HL2 або HL2: DM, то кращий спосіб залежить від того, чи потрібно стріляти крізь неї. Якщо немає (наприклад, сходи на стіні), то просто змініть значення Collisions (зіткнення) на Use Bounding Box (використовувати рамку-обмежувач). Якщо так, то виберіть значення Not Solid (НЕ твердий) і помістіть брашевих невидимий Clip (toolsclip), який буде відповідати за зіткнення.
- Якщо це похила сходи для HL2 або HL2: DM, рамка-обмежувач НЕ буде повертатися разом з моделлю і стане заважати системі підйому, в цьому випадку вам потрібно зробити модель сходів Not Solid. і поряд з нею помістити невидимий повернений браш, покритий текстурою Clip (toolsclip) або Player Clip (toolsplayerclip) (в залежності від того, чи потрібно стріляти крізь сходи).
- Якщо це сходи для карт CS: S або DoD: S, вам потрібно змінити значення Collisions на Not Solid і створити браш func_ladder поверх моделі сходи, обертаючи його в разі потреби.
На багатокористувацьких картах сходи потрібно малювати так, щоб можна було вільно лазити паралельно поверхні, уздовж якої вони проходять. Брашевие сходи треба перетворювати в нетвердою func_brush. щоб уникнути тимчасового "застрявання" гравців; моделі сходів найчастіше стирчать зі стіни, і коли гравець стоїть на такий, це виглядає неправдоподібно. В цьому випадку краще використовувати два Браша з текстурою Player Clip по краях пропо, які будуть вирівнювати гравця на моделі.
Якщо нічого іншого, то перетворіть браш сходи в func_detail. щоб він не розрізав листя.