Тема: Как сделать... (вопрос-ответ) Ключевые слова: См. также:
Примечание: это пополняемая "копилка" сведений (не является законченной
статьёй). В: как соединить между собой две (или больше) энтити? Как прикрепить одну энтити к другой (в т.ч. к NPC)? Имеется ввиду не с помощью атрибута Parent, а в виде физической конструкции. О: для любой пары скрепляемых объектов используйте constraint-энтити. В: как изменить окраску (текстуру) модели (prop_*), если заранее известно, что у нее есть несколько "скинов"? В частности, некоторые модели дверей содержат набор skin 0...skin N (несколько возможных текстур двери для одного и того же полигонального "скелета"). О: номер текстуры (начиная с 0) задается атрибутом Skin для энтити prop_static, prop_dynamic_*, prop_physics_* и некоторых других. Ставится автоматически, если выбрать его в просмотрщике моделей. В: как отдать одну и ту же управляющую команду (Output) одновременно нескольким энтити (в т.ч. NPC)? О: назовите каждую энтити по принципу: имя_01, имя_02 и т.д. То есть начальная часть имени каждой энтити должна быть неизменной, а окончание - произвольным (хотя рекомендуется давать числовое, чтобы не запутаться). Тогда имя цели в управляющей команде задается как имя_* (в данном случае звездочка ставится). В результате все энтити с атрибутом Name, который начинается с имя_, получат одновременно одну и ту же команду. Кроме того, всегда можно добавить в группу новые энтити, просто скопировав существующие. На них также будет действовать управляющая команда. Обратите внимание, что знак подчеркивания не обязательно должен присутствовать в имени. Здесь он добавлен для наглядности. Замечание: не рекомендуется задавать всем энтити одно и то же имя, а затем указывать его в управляющей команде. В этом случае команду получит только одна энтити с данным именем. В: как подогнать дизайн карты по росту игрока, чтобы при игре не чувствовать себя великаном или карликом? О: можно ставить энтити info_player_start сколько угодно раз и ориентироваться на них. Чтобы определить место, с которого начинает игрок, установите флаг Master (Has priority if multiple info_player_starts exist) у соответствующей энтити info_player_start. Таким образом движок узнает, что именно она задаёт позицию игрока при запуске карты. В: как сделать, чтобы обе створки двери открывались синхронно в одну и ту же сторону (вперед либо назад)? О: присвоить им одинаковые имена (параметр Name). Это также вынудит их открываться в одном направлении, однако в случае препятствия (в т.ч. NPC) створка всё-таки откроется в другую сторону. В: как отыскать на карте проблемный участок, вызвавший ошибку при компиляции? О: в журнале (логе) компиляции рядом с сообщением об ошибке могут быть указаны координаты проблемной точки или номер браша. Используйте, соответственно, пункт меню View -> Go to Coordinates… или View -> Go to Brush Number… В появившемся окошке укажите координаты (номер), полученные из журнала (лога). В: что делать, если журнал (лог) компиляции уже закрыт, но надо найти ошибку, не компилируя карту заново? О: в папке с картой <имя карты>.vmf после первой компиляции появляется файл <имя карты>.log. Этот файл пополняется результатами каждой компиляции той же самой карты. В: как сделать простой лифт? О: лифт очень легко делается из брашевой энтити func_door. Подробнее см. ссылку Настоящий простой лифт. В: как узнать в редакторе Hammer, какие грани displacement проходимы, а какие - нет? О: кнопка Disp Mask Walkable () отвечает за отображение доступных граней displacement. Доступных в том смысле, что игрок и NPC могут забираться на них и ходить по ним, как по обычному брашу. Если данный режим включён, на выбранный displacement накладывается сетка (каркас) из составляющих его граней. Непроходимые грани закрашиваются сплошным жёлтым цветом, остальные грани не закрашиваются. В: как выполнить автоматическое соединение двух displacement в редакторе Hammer? О: использовать кнопку Sew на закладке Displacement. При этом ширина соединяемых граней должна быть одинаковой, а разница в перепадах высот не должна превышать 1 (источник). См. также Displacement. В: как достать ресурсы из игры Portal 2? О: программой GCFScape открыть файл <путь установки Steam>/SteamApps/common/portal 2/portal2/pak01_dir.vpk В: как сделать верёвку/провод, изначально закреплённую в некой точке (keyframe_rope), а во время игры отцепить верёвку/провод в этой точке в свободное состояние? О: значение атрибута Parent нужной энтити keyframe_rope задать именем невидимой малой энтити-браша func_physbox, у которой, в свою очередь, включить флаг Motion Disabled. В нужный момент подать команду EnableMotion энтити func_physbox. Примечание: данным способом невозможно убрать "излом" верёвки/провода в точке, заданной энтити keyframe_rope. С другой стороны, это единственный и простой метод реализации нужного эффекта. В: как сделать, чтобы NPC мог спрыгнуть вниз с некоторой высоты? О: необходимые условия:
В: Как сделать минимальными затратами, чтобы изначально враждебные NPC напали друг на друга только по условию? О: Проще всего использовать энтити ai_relationship для этих NPC. Отношение оставить по умолчанию (Like), а приоритет задать достаточно большим (например, 1000). В нужный момент подайте команду RevertRelationship искомой энтити (обратите внимание, что команда Kill в данном случае не даст нужного эффекта - отношение NPC останется без изменений). Статьи (рус): Статьи (eng):
Номер статьи: 30
|