Частина 13.4 Всі про ящиках
У цьому матеріалі ми розповімо про те, як зробити, щоб ящики вибухали разом з бомбою, чому окремі творці карт піднімають ящики над землею, як зробити непробивний ящик, як вирішити проблему з двома, що стоять один на одному розбивають ящиками, а також деяку іншу корисну інформацію.
1. Підриваємо ящики разом з бомбою
Всі ми прекрасно пам'ятаємо як на De_Dust разом з бомбою вибухають ящики. Давайте подивимося, як це реалізовано. На малюнку нижче зображений план, при якому ящики вибухнуть разом з бомбою.
Що ж, у нас є ентіті-об'єкт func_bomb_target. зафарбований з усіх боків спец. AAATrigger. Даний ентіті-об'єкт, як ви вже мабуть знаєте, визначає місце закладки бомби. Ще у нас є пара-трійка ящиків (поки що це звичайні браши). Всі ці ящики потрібно перетворити в ентіті-об'єкт func_breakable (виділимо всі ящики і натиснемо [Ctrl-T]. В списку виберемо func_breakable).
Можна перетворити кожен ящик в окремий func_breakable. а можете все ящики разом перетворити в один едінственнийfunc_breakable. Якщо ви вирішите створити кілька func_breakable. то дайте всім їм однакову назву.
Основні параметри func_breakable:
Name - bomb_crate (обов'язково вкажіть назву);
У закладці Flags необхідно відзначити:
Only Trigger - щоб ящики вибухали тільки від тригера, тобто бомби в нашому випадку.
Решта властивості, такі як: material type (тип матеріалу), explode magnitude (потужність вибуху) - вкажіть на свій розсуд.
Тепер перейдемо до об'єкта func_bomb_target. Все, що потрібно з ним зробити, це вписати в параметр «Target (when bomb blows)» назва наших ящиків, тобто bomb_crate. От і все!
2. Чому творці карт підвішують ящики над землею?
Наприклад, в рівні De_Nuke є такий «баг»:
А багом це називають організатори чемпіонатів по CS. Вони навіть дивляться за гравцями, щоб ті не дивилися в цю щілинку, через яку видно ноги противника.
На вигляді збоку це виглядає так:
Якщо ж ящик є ентіті-об'єктом, наприклад, func_wall або func_breakable. або ж він не стикається з підлогою (як в даному випадку), то розбиття на полігони не відбувається, і r_speeds не підвищується. Таким чином, ми можемо заощадити кілька полігонів.
3. Як зробити непростреліваемий ящик?
Повернемося знову до De_Dust. На малюнку нижче представлений ящик, яка не пробивається ні з чого.
Як видно з малюнка, ящик розрізаний навпіл по вертикалі. Движок HL влаштований таким чином, що 1 браш або ентіті-об'єкт (наприклад, func_wall) пробиваються з пробивають видів зброї, а 2, що стоять впритул один до одного - немає. В цьому і полягає відповідь на питання, чому більші ящики, які стоять в «кишці» пробиваються, а даний, здавалося б, невеликий ящик - немає.
Іноді, можливо, вам потрібно буде зробити 2 ящика стоять поруч, і щоб вони були прострілював. Тоді замість 2-ух ящиків потрібно створити 1, але за розміром рівний 2-розум (дивіться картинку нижче).
А ось як просто затекстуріровать цей ящик. Виберемо необхідну текстуру ящика, виділимо більшу сторону ящика і на панелі роботи з текстурами (Face Properties) натиснемо кнопку Fit. щоб розтягнути текстуру по всій стороні браша.
Потім на тій же панелі зменшите в два рази масштаб (Scale) текстури по осі Х або Y (залежить від положення ящика). Якщо ви вирішите зробити не два ящика, а, скажімо, чотири, то і масштаб зменшуйте в 4 рази і т.п.
Потім ймовірно знадобиться поклацати кнопки вирівнювання по сторонам: C, T, B, L, R. щоб текстура лягла рівно, як на картинці нижче.
Гравцеві здається, що ящика 2, хоча насправді браш тільки 1. А раз браш один, значить він буде прострілюватися з пробивають видів зброї.
4. Два розбивають ящика, що стоять один на одному
На ріснуке нижче ви можете бачити 2 розбивають ящика, кожен з яких - окремий ентіті-об'єкт func_breakable.
Якщо гравець розстріляє спочатку верхній ящик, а потім нижній, то нічого дивного не станеться. Але що буде, якщо гравець спочатку розіб'ється нижній ящик? Верхній впаде? Як би не так!
Верхній ящик залишиться спокійно висіти в повітрі без опори. Де ж реалістичність? Тому потрібно зробити так, щоб при руйнуванні нижнього ящика, верхній також би розбивався. Ось як це робиться.
Дамо кожному ящику (об'єкту func_breakable) назва. Верхньому дамо ім'я crate1. а нижньому - crate2. Виставимо потрібні параметри (матеріал з чого зроблений; сила-міцність і ін.). Тепер важливий момент. У параметр «Target on Break» нижнього ящика запишемо назву верхнього: crate1.
Тепер якщо ми розстріляємо нижній ящик на ім'я crate2, він активує верхній по імені crate1, і він теж розіб'ється, але вже без допомоги гравця. Ну, а якщо ми разоб'ем спочатку верхній ящик, то нижній, як і належить, залишиться цілим. Таким чином, ми додамо нашому рівню трохи більше реалістичності. Єдине, щоб це було хоч кому-небудь треба :-)
5. Ящики замість сходів
Іноді ящики можуть замінити сходи. Наприклад, на Cs_Italy по шухлядах можна забратися в кімнатку біля місць народження контр-терористів.
Головне, що необхідно враховувати при виготовленні ящиків - їх розмір. Стандартними розмірами ящиків є:
48 х 48 х 48
64 х 64 х 64
80 х 80 х 80
96 х 96 х 96
112 х 112 х 112
128 х 128 х 128
Але, стандартні, не означає, що ящики повинні бути саме таких розмірів. До того ж на ящики і взагалі будь-які інші препятствіявише 62 юнітів гравець самостійно вилізти не може. Так що на стандартний 64 х 64 х 64 ящик гравцеві Ніяк не залесть, якщо, звичайно, його хто-небудь не підштовхне.
Щоб гравець міг самостійно залесть на ящик небхідно скоротити розмір його сторін, скажімо до 60 х 60 х 60 юнітів або до 56 х 56 х 56 юнітів.
6. пересуватися ящики
Тут нічого складного немає. Перетворюємо натисканням комбінації клавіш [Ctrl-T] ящик в ентіті-об'єкт func_pushable і виставляємо потрібні параметри. Головне, що потрібно пам'ятати, якщо для даного об'єкта поставте прапорець breakable. то ящик можна буде розбити всього ОДИН раз, так як після свого першого розбиття, він зникне до кінця гри, поки рівень не буде перезавантажений. Так відбувається, наприклад, з табуреткою на мапі Cs_Estate. яка блокує двері. Якщо табуретку 1 раз розбити, вона більше не з'явиться до кінця часу гри на карті.
Дана особливість дісталася Counter-Strike'у від HL. В HL немає раундів, і тому об'єкти в Half-Life зникали назавжди. У Counter-Strike, на жаль, відбувається точно також, тому доводиться це пам'ятати.
Що ще можна додати до написаного вище, можливо, необхідно порадити не перетворювати свій рівень в склад :-) Так, ящики іноді незамінні. Ящик з красивою текстурою може прекрасно вписується в дизайн рівня і поліпшити його зовнішній вигляд, але все ж робіть все можливе і намагайтеся не переборщувати, придумуйте побільше природних укриттів або, на худий кінець, замінюйте ящики сміттєвими баками, зношеними покришками, бочками, якимись приладами, трансформаторами - в загальному придумуйте!
Частина 13.2 Прозорі ґрати й забори
Частина 13.3 Кнопки й обертові важелі
Частина 13.4 Всі про ящиках