Воскресенье, 22.12.2024, 07:10

logo

Пользовательский поиск

Меню сайта
Категории раздела
Разное [13]
Tutorials
Создание моделей [2]
Создание карт [26]
Кодинг [24]
Форма входа
Наш сервер CS 1.6
Поиск
Наш опрос
Ваш телефон
Всего ответов: 183
Друзья сайта


Главная » Статьи » HL Source Development » Создание карт


Физические энтити

Физические энтити

Добавление физики в движок Сорса открыло широкий ряд возможностей по имитации физических свойств объектов. Левел-дизайнеры теперь могут создавать реалистично работающие объекты: от покрышки на веревке до сложного механизма. Для их создания нужно знать, как работают физические энтити и как они применяются, что и написано в приведенном ниже списке. Короче, скажу так: хотите использовать на своей карте то, что является фишкой ХЛ2,- читайте дальше;)

Соединяющие энтити

В реальной жизни объекты прикреплены друг к другу различными способами: двери прикреплены к косякам при помощи петель, рука прикреплена к торсу при помощи сустава. Все это точно также отображено в движке Сорса, ниже приведен список constraint-энтитей - энтитей, с помощью которых вы сможете прикреплять объекты друг к другу различными способами.

phys_constraintsystem

Большое количество энтитей, соединенных вместе, обычно очень сильно загружает систему, так как нужно просчитывать все взаимодействия между ними. Один из способов уменьшить нагрузку на систему - собрать все constraint-энтити, действующие на одни и те же объекты, и объединить их в эту самую constraint-систему (т.е. в соединительную систему=)). Это позволит системе физики в игре просчитывать взаимодействие между объектами намного быстрее. Таким образом, эта система призвана получить максимальную производительность при нескольких физических связях объектов.


phys_constraint

Самый простой способ соединения - прикрепить один объект к другому, как будто они присоединены друг к другу при помощи гвоздей или клея. Энтитя имеет два поля, в которых указываются связываемые объекты. Если одно из полей оставить пустым, то оставшаяся энтитя будет твердо прикреплена к центру phys_constraint (т.е. как будто они соединены при помощи палки, а не веревки (rigid - жесткий, негнущийся, закрепленный неподвижно)) - это очень часто используемый способ привязки объектов к игровому миру. Вы также можете указать в свойствах энтити лимит приложенной к ней силы, после превышения которого связь между скрепленными объектами будет разрушена. Кстати, этот разрыв связи можно использовать как событие в системе И/О (Input/Output)

Карта-пример - maps/sdk_phys_constraint.vmf


phys_ballsocket

Способ действия болсокета (ball socket - "круглая впадина";)) точно такой же, как и у сустава вашей руки, который прикрепляет ее к торсу. Объект прикрепляется к другому объекту в определенной точке и может вращаться в любом направлении. Эта энтитя может использоваться для прикрепления веревки к какой-нибудь стене.

Карта-пример - maps/sdk_phys_ballsocket.vmf


phys_hinge

Так же, как и обычные дверные петли, эта энтитя позволяет прикрепленным объектам двигаться вокруг одной оси. Эта ось видна в Хаммере при включенном хелпере; чтобы указать ось, просто составьте ее из линии между энтитей и кругленькой штуки;). Также здесь имеется свойство трения, то есть вы можете заставить петли вращаться так, как будто они очень старые или ржавые (или старые и оттого ржавые=)). Свойство "load scale" точно такое же, как и у phys_motor (см. ниже).

Карта-пример - maps/sdk_phys_hinge.vmf


phys_lengthconstraint

Эта энтитя сохраняет дистанцию между двумя объектами. Если поставлен флаг "Keep Rigid", то объекты будут соединены так, словно их прикрепили к одной палке; если же нет, то будет похоже на веревку.

Карта-пример - maps/sdk_phys_lengthconstraint.vmf


phys_pulleyconstraint

По большому счету это 2 phys_lengthconstraint`а и 2 точки в пространстве. Принцип действия этой энтити похож на веревку, соединенную с двумя объектами, каждый из которых подвешен на ролик. Энтитя сохраняет постоянным суммарное расстояние между этими двумя точками и объектами... Другими словами, если потянуть за один конец и удлинить воображаемую веревку, то на другом конце она укоротится%).

Карта-пример - maps/sdk_phys_pulleyconstraint.vmf


phys_convert

Иногда требуется, чтобы объект был статичным (бездвижным) до определенного момента. Например, у вас на карте есть что-то вроде скалы и вы хотите, чтобы она оставалась неподвижной до того, как произойдет взрыв, и скалы обрушились. Здесь вместо использования phys_constraint, можно применить более простую и нетрудную энтитю phys_convert. Она единовременно (один раз;)) конвертирует статичные энтити в физические: prop_static-энтити превратятся и станут вести себя как prop_physics, а func_brush - как func_physbox. Такой способ уменьшает нагрузку на движок, так как на обработку неподвижных энтитей тратится меньше ресурсов, чем если бы они были изначально физическими объектами и просто скреплены phys_constraint`ом.

Карта-пример - maps/sdk_phys_convert.vmf


phys_ragdollconstraint

Действует так же, как и phys_constraint, только применяется к ragdoll`ам. Также здесь можно указать минимальный и максимальный углы вращения вокруг осей и силу трения при вращении.

Карта-пример - maps/sdk_phys_ragdollconstraint.vmf


phys_slideconstraint

Эта энтитя позволяет прикрепленному объекту перемещаться вдоль одной оси так же, как кольца, держащие занавеску, перемещаются по гардине=) Энтитя имеет хелпер, указывающий ось перемещения.

Карта-пример - maps/sdk_phys_slideconstraint.vmf


phys_keepupright

Эта энтитя поддерживает физические объекты в вертикальном положении, прикладывая для этого к ним вращающую силу. Количество градусов этой силы в секунду в поле "Angular Limit". Чем больше это значение, тем быстрее объект будет возвращаться в исходное положение.

Карта-пример - maps/sdk_phys_keepupright.vmf


phys_spring

Это физическая симуляция пружины. В поле "Length" указывается ее длина в спокойном состоянии. Если что-нибудь к ней присоединить, то она естественно удлинится. А насколько удлинится можно указать в поле "Spring Constant": чем больше значение, тем меньше растяжение пружины.

Карта-пример - maps/sdk_phys_sprint.vmf


Прочие энтити

phys_magnet

Эта энтитя действует как магнит, притягивая к себе металлические физические объекты, касающиеся ее.

Карта-пример - maps/sdk_phys_magnet.vmf


phys_motor

Пытается вращать указанную энтитю с определнной скоротью. Рассматривайте это, как мотор, который осью соединен с вращаемым объектом. Здесь есть величина "load scale", которую можно сравнить с лошадиной силой, т.е. мотор будет пытаться вращать объект с определенной скоростью, но при сопротивлении скорость будет уменьшаться, а когда ничего не будет мешать, снова начнет возрастать. Например, если в этом поле написать "2", то мотор будет прилагать вдвое больше усилий, чтобы восстановить прежнюю скорость.

Карта-пример - maps/sdk_phys_motor.vmf


phys_ragdollmagnet

Простая энтитя, притягивающая к себе ragdoll`ы. Часто используется для более реалистичной смерти npc. Энтитя может притягивать трупы как к одной точке, так и к целой "панели", т.е. вдоль определенной оси, но не по прямой линии.

Карта-пример - maps/sdk_phys_ragdollmagnet.vmf


phys_thruster

Эта энтитя служит для приложения к объекту силы вдоль определенной оси. Она работает точно так же, как двигатель ракеты, двигающий ее вперед. Также имеется встроенный таймер, позволяющий указать время, по окончании которого "двигатель" остановится.

Карта-пример - maps/sdk_phys_thruster.vmf


phys_torque

Энтитя похожа на phys_motor, придает угловую скорость объекту. Также может игнорировать массу объекта и имеет таймер, позволяющей действовать на протяжении некоторого времени, а потом выключиться.

Карта-пример - maps/sdk_phys_torque.vmf


Перевод AndrewDragon`а
Приятного вам маппинга:)
Взято с www.ollective.valve-erc.com

© 2004 Valve Corporation. All rights reserved. Valve, the Valve logo, Half-Life, the Half-Life logo, the Lambda logo, Steam, the Steam logo, Team Fortress, the Team Fortress logo, Opposing Force, Day of Defeat, the Day of Defeat logo, Counter-Strike, the Counter-Strike logo, Source, the Source logo, Hammer and Counter-Strike: Condition Zero are trademarks and/or registered trademarks of Valve Corporation.  Microsoft and Visual Studio are trademarks and/or registered trademarks of Microsoft Corporation.  All other trademarks are property of their respective owners.

Категория: Создание карт | Добавил: SuperStart (18.09.2010)
Просмотров: 2183 | Рейтинг: 0.0/0 |



Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright www.akksimo.net © 2024