Працюючі сходи - 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). Просто тягніть ці точки туди, де повинна розташовуватися сходи.

Працюючі сходи - valve developer community

Мал. 1a - Точки сходи (використовуються дві func_ladderendpoint s)

Переконайтеся, що кінцеві точки сходи не стосуються її видимого Браша, і знаходяться на відстані в парі одиниць від нього (а таже будь-якого іншого Браша або моделі), інакше частина сходів може не працювати.

Сьогодні застаріла сутність func_ladderendpoint складається лише з однієї кінцевої точки. Розмір сходи створюється шляхом скріплення двох func_ladderendpoints, які вказуються в властивості.

точки сходу

Працюючі сходи - valve developer community

Мал. 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 один з одним.

Працюючі сходи - valve developer community

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

Працюючі сходи - valve developer community

Мал. 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. Тепер у вас є поверхня-сходи в передній частині об'єкта / Браша.

Працюючі сходи - valve developer community

Мал. 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. щоб він не розрізав листя.