Ru/Working ladders: Difference between revisions
No edit summary |
SirYodaJedi (talk | contribs) m (SirYodaJedi moved page Ru/Working Ladders to Ru/Working ladders) |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{lang|Working Ladders|title=Работающие лестницы}} | ||
| title=Работающие лестницы | |||
}} | |||
== Введение == | == Введение == | ||
Во всех играх | Во всех играх {{L|Source}} имеются лестницы (кроме {{L|Team Fortress 2}} и {{L|Portal 2}}, где их нет), состоящие из модели или браша, и системы невидимых энтить, расположенных рядом. Эти невидимые энтити и создают видимость того, что игрок взбирается по модели/брашу лестницы. | ||
=== Видимая часть лестницы === | === Видимая часть лестницы === | ||
Для её создания вы можете использовать | Для её создания вы можете использовать | ||
* энтитю | * энтитю {{L|prop_static}} с моделью лестницы (например, ''models\props_c17\metalladder001.mdl''), или | ||
* браш с текстурой лестницы (например, ''metal/metalladder001a''). | * браш с текстурой лестницы (например, ''metal/metalladder001a''). | ||
=== Система подъёма === | === Система подъёма === | ||
Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в | Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в {{L|Half-Life 2}} и {{L|Half-Life 2: Deathmatch}} создаются немного не так, как в ранних играх, они стали удобнее для дизайнеров карт и игроков, а лестницы в {{L|Counter-Strike: Source}} и {{L|Day of Defeat: Source}} реализованы также, как в старых играх. | ||
Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. [[#Ladders_for_Counter_Strike:_Source_and_Day_of_Defeat:_Source|ниже]]. | Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. [[#Ladders_for_Counter_Strike:_Source_and_Day_of_Defeat:_Source|ниже]]. | ||
== Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch == | == Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch == | ||
Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити | Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити {{L|func_useableladder}}, или устаревшей {{L|func_ladderendpoint}} (которая кратко описана ниже для понимания работы старых карт). | ||
Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки ''(см. рис. 1a)''. Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити ''(см. рис. 1b)''. Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины ''(см. рис. 1c)''. Просто тяните эти точки туда, где должна располагаться лестница. | Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки ''(см. рис. 1a)''. Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити ''(см. рис. 1b)''. Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины ''(см. рис. 1c)''. Просто тяните эти точки туда, где должна располагаться лестница. | ||
{| border=0 cellspacing=0 cellpadding=0 | {| border=0 cellspacing=0 cellpadding=0 | ||
| [[ | | [[File:hammer_ladders1.jpg|frame|left|Рис. 1a – Точки лестницы (используются две <code>func_ladderendpoint</code>s)]] | ||
| [[ | | [[File:hammer_ladders2.jpg|frame|left|Рис. 1b – Изменение ориентации]] | ||
| [[ | | [[File:hammer_ladders3.jpg|frame|left|Рис. 1c – Наклон лестницы]] | ||
|} | |} | ||
Line 38: | Line 32: | ||
=== Точки схода === | === Точки схода === | ||
[[ | [[File:hammer_ladders4.jpg|frame|left|Рис. 2 – Точки схода]] | ||
Также, вы можете задать точки схода с лестницы ''(см. Рис. 2)''. Они создаются с помощью энтити | Также, вы можете задать точки схода с лестницы ''(см. Рис. 2)''. Они создаются с помощью энтити {{L|info_ladder_dismount}}. Во время лазания игрок может сойти, нажав клавишу использования (обычно так делается, когда лестница выше двух этажей). В данном же случае игрок сходит сам, просто достигнув одной из точек. | ||
Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы. | Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы. | ||
Line 53: | Line 47: | ||
{| border=0 cellspacing=0 cellpadding=0 | {| border=0 cellspacing=0 cellpadding=0 | ||
| [[ | | [[File:hammer_ladders5.jpg|frame|left|Рис. 3a – Визуализация в игре (<code>sv_showladders 1</code>)]] | ||
| [[ | | [[File:hammer_ladders6.jpg|frame|left|Рис. 3b – Конечная точка застряла в полу]] | ||
|} | |} | ||
Line 65: | Line 59: | ||
== Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod == | == Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod == | ||
Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом '''tools/toolsinvisibleladder''' и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите | Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом '''tools/toolsinvisibleladder''' и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите {{L|func_ladder}}. Теперь у вас есть поверхность-лестница в передней части объекта/браша. | ||
{| border=0 cellspacing=0 cellpadding=0 | {| border=0 cellspacing=0 cellpadding=0 | ||
| [[ | | [[File:Cssladderprop01a.png|frame|left|Рис. 4 - {{L|func_ladder}} с текстурой '''tools/toolsinvisibleladder''' перед лестницей {{L|prop_static}}.]] | ||
|} | |} | ||
Line 77: | Line 71: | ||
== Лестницы для Counter Strike: Global Offensive == | == Лестницы для Counter Strike: Global Offensive == | ||
См.: | См.: | ||
* | * {{L|Creating_Ladders_(CSGO)}} | ||
== Лестницы для Left 4 Dead & Left 4 Dead 2 == | == Лестницы для Left 4 Dead & Left 4 Dead 2 == | ||
Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2: | Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2: | ||
* | *{{L|L4D_Level_Design/Ladders|Creating Ladders for the Left 4 Dead series}} | ||
*[[L4D_Level_Design/Versus_Maps#Making_Infected_Ladders_Visible|Creating Infected only Ladders]] | *[[L4D_Level_Design/Versus_Maps#Making_Infected_Ladders_Visible|Creating Infected only Ladders]] | ||
== Оптимизация лестниц == | == Оптимизация лестниц == | ||
По-умолчанию, модели лестниц используют | По-умолчанию, модели лестниц используют {{L|VPhysics}}, чтобы обеспечить точность соприкосновения, но иногда этого не требуется. В многопользовательских и тяжёлых картах использование моделей с VPhysics отнимает драгоценные ресурсы, и чтобы избежать лагов, хорошей физикой можно пожертвовать. Вот несколько отличных способов, чтобы разгрузить ресурсы: | ||
*Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение ''Collisions'' (столкновения) на ''Use Bounding Box'' (использовать рамку-ограничитель). Если да, то выберите значение ''Not Solid'' (не твёрдый) и поместите брашевый невидимый Clip (''toolsclip''), который будет отвечать за столкновения. | *Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение ''Collisions'' (столкновения) на ''Use Bounding Box'' (использовать рамку-ограничитель). Если да, то выберите значение ''Not Solid'' (не твёрдый) и поместите брашевый невидимый Clip (''toolsclip''), который будет отвечать за столкновения. | ||
Line 93: | Line 87: | ||
*Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение ''Collisions'' на ''Not Solid'' и создать браш func_ladder поверх модели лестницы, вращая его по необходимости. | *Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение ''Collisions'' на ''Not Solid'' и создать браш func_ladder поверх модели лестницы, вращая его по необходимости. | ||
На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый | На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый {{L|func_brush}}, чтобы избежать временного "застревания" игроков; модели лестниц зачастую торчат из стены, и когда игрок стоит на такой, это выглядит неправдоподобно. В этом случае лучше использовать два браша с текстурой Player Clip по краям пропа, которые будут выравнивать игрока на модели. | ||
Если ничего другого, то преобразуйте браш лестницы в | Если ничего другого, то преобразуйте браш лестницы в {{L|func_detail}}, чтобы он не разрезал листья. | ||
== Примеры == | == Примеры == | ||
'''HL2/HL2:DM''' | '''HL2/HL2:DM''' | ||
* | *{{L|ladder_simple}} – Префаб с полностью рабочей лестницей. | ||
*[http://nudel.omega2k3.de/maps/?s=download&act=view&fileID=21 LaddersHL2.zip]{{ | *[http://nudel.omega2k3.de/maps/?s=download&act=view&fileID=21 LaddersHL2.zip]{{Dead link}} (6k) | ||
<!-- SDK nuts has closed. When (and if) these tutorials are ported onto the VDC, please link to them instead! | <!-- SDK nuts has closed. When (and if) these tutorials are ported onto the VDC, please link to them instead! | ||
*[http://www.sdknuts.net/akg/tutorials/wiseladder.asp HL2 Ladders] | *[http://www.sdknuts.net/akg/tutorials/wiseladder.asp HL2 Ladders] | ||
Line 109: | Line 103: | ||
== См. также == | == См. также == | ||
* | *{{L|func_useableladder}} | ||
* | *{{L|func_ladderendpoint}} | ||
* | *{{L|info_ladder_dismount}} | ||
* | *{{L|func_ladder}} | ||
{{ACategory|Level Design}} | |||
{{ACategory|Tutorials}} |
Latest revision as of 06:29, 12 March 2025
Введение
Во всех играх 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). Просто тяните эти точки туда, где должна располагаться лестница.
Убедитесь, что конечные точки лестницы не касаются её видимого браша, и находятся на расстоянии в паре единиц от него (а таже любого другого браша или модели), иначе часть лестницы может не работать.
Сегодня устаревшая сущность func_ladderendpoint состоит лишь из одной конечной точки. Размер лестницы создаётся путём связывания двух func_ladderendpoints, которые указываются в свойствах.
Точки схода
Также, вы можете задать точки схода с лестницы (см. Рис. 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 друг с другом.
Как лестница работает в игре
Самый безопасный способ взобраться по лестнице в 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 , чтобы он не разрезал листья.
Примеры
HL2/HL2:DM
- ladder_simple – Префаб с полностью рабочей лестницей.
- LaddersHL2.zip[мёртвая ссылка] (6k)
CS:S/DoD:S
- LaddersCSS.zip (7k)