Вот и подошли к дверям...
Основных типов дверей 2: отъезжающие и открывающиеся. Стандартный размер дверей 64х4х96 юнитов.
1. Отъезжающие
Давайте сначала разберемся каким образом можно реализовать открытие дверей:
1. От кнопки\рычага
2. От use'a
3. От триггера
Кнопка\рычаг
Сначала, конечно, нужно сделать проем для дверей. Теперь, когда проем готов, вставляем в него браш-дверь. Примерно так:
Теперь отсылаем браш-дверь to Entity в func_door. Потом определяем такие параметры:
Name - если дверь открывать кнопкой\рычагом (и триггером), то этот параметр обязателен - с помощью него мы и активируем дверь.
Speed - скорость открытия дверей.
Move sound - звук при открытии.
Stop sound - звук после открытия\закрытия.
Delay before close - время до закрытия (после открытия:) ). Если стоит значение "-1" то
дверь не будет закрываться (только в одном раунде - в начале следующего
она снова будет закрыта).
Damage inflicted when blocked - повреждения, которые нанесутся игроку если от встанет в проеме когда дверь будет закрыватся - его этой дверью хряснет:).
Target - имя обьекта, который дверь после открытия активирует (короче, это не обязательно!).
Ну а остальные параметры не важны (лично я ими никогда не пользуюсь) - не трогайте их...
Flags (флаги):
Starts open - при начале раунда открыта.
Passable - делает дверь нематериальной - через нее можно пройти.
Toggle - если флаг включен, то двери после открытия, закрыть можно будет только еще раз активировав (кнопкой, триггером, use'ом...).
Use only - Дверь будет открыватся только от Use'a (стандартная клавиша "Е" - в
игре). З.Ы. Вот я и рассказал как двери делать открывающимися от
Use'a:)
Остальные флаги не важны...
Кстати, в закладке Class info (там где вы выставляете параметры
энтитям) есть такая вещь, как Angle: эта стрелочка указывает в какую
сторону (на 3D-виде) будет отъезжать дверь. Также можно поставить
Up\down, чтобы дверь отъезжала, соответственно, вверх\вниз.
Теперь надо сделать кнопку\рычаг для открытия дверей.
Кнопка Делаем где-то около дверей (ну, как хотите) маленький браш-кнопку (закрашенный кнопочной текстурой).
Вот так:
Теперь отсылаем браш-кнопку to Entity в func_button со следующими пропертис:
Targetted object - здесь вписываем имя двери, которую нужно этой кнопкой открыть.
Delay before reset - время, через которое кнопку снова можно будет активировать. Лучше ставьте "0".
Во флагах ставьте Don't move чтобы кнопка не двигалась после нажатия. Если не отметить этот флаг, то
кнопка будет двигатся в направлении указаном стрелочкой Angle.
Флаг Touch activates - если отмечен, то кнопка активируется когда до нее дотронется игрок, а не активирует. Вот и готова кнопка!
Рычаг Это, по моему, совсем ненужная фича, но если кому-то нужно, то вот рецепт создания:
Сначала
нам нужна дверь (!обязательно дайте ей имя!). Когда дверь готова,
делаем около нее браш-рычаг, можно сделать его из нескольких брашей:
Потом делаем ось вращения - браш закрашенный текстурой ORIGIN (точкой вращения служит центр браша). Запомните это - еще понадобится!
Получится примерно так:
Далее выделяем наш рычаг (браш\браши) и ось вращения
(ORIGIN-браш), и отправляем его to Entity в func_rot_button c такими
пропертис:
Targetted object - имя двери которую надо открыть.
Speed - скорость вращения рычага.
Delay before reset - время через которое снова можно будет активировать рычаг после его использования.
Distance (deg) - угол вращения в градусах. Если поставить 90 - то рычаг повернется на 90 градусов, ну и так далее...
Flags\флаги
Not solid - если включен, то в игре
рычаг будет нематериальным - не будет цеплять игрока (я всегда это
ставлю, если конечно пользуюсь рычагом вместо кнопки:) ).
Reverse dir - будет вращатся в обратную сторону. По дефолту крутится, вроде-бы, против часовой стрелки.
Toggle - короче, если нажали рычаг, он покрутился, а обратно не будет - только если его снова нажать.
X asis и Y asis - ну ось, по которой будет крутится рычаг. Если как на рисунке, то Y.
Touch activates - активируется только от прикосновения игрока. Фух, разобрались...
Триггер (trigger) Триггер - это браш окрашенный текстурой
AAATRIGGER и отосланный to Entity в trigger_*** энтити
(trigger_multiple, trigger_once...). В игре триггер невидим! Но после
того как игрок пересечет его (или просто зацепит), то он активирует
указанный обьект.
Чтобы открыть дверь триггером, надо сначала создать ее
(дверь), и дать ей уникальное имя. Когда готова, то создаем около нее
браш-триггер окрашенный текстурой AAATRIGGER, и расположим ее около
двери. Вот так:
Теперь выделяем браш-триггер, и отсылаем to Entity в trigger_multiple с такими параметрами:
Target - впишите сюда имя двери. Когда игрок пересечет триггер - он активирует
дверь, и она откроется. На рисунке триггер расположен только с одной
стороны двери, в этом случае дверь можно будет открыть только с этой
стороны. Обычно надо распологать два триггера с разных сторон двери (с
одинаковыми параметрами).
Delay before reset - время, через которое триггер снова можно будет активировать после одного использования (ставьте 0).
Flags\флаги Pushables - если этот флаг установлен,
то триггер можно будет активировать не только игрокам, но и затолкнув в
него, например, ящик (func_pushable).
Вот и рассказал вам как сделать отъезжающую дверь.
2. Открывающиеся Открывающиеся двери (как на cs_militia) активируются как и отъезжающие (триггер, кнопка, use).
Делаем точно так-же как и в случае с отъезжающими дверьми: дырка, браш-дверь...
Когда браш-дверь готова (to Entity не отправлять!), строим ось -
дверь-же вращаемая, поэтому нужна ось вращения. Точкой вращения будет
центр ORIGIN-браша. Должно получится где-то так:
Потом делайте браш-дверь и браш-ось (!выделять оба обьекта!) и отправляйте to Entity в func_door_rotating с такими пропертис:
Точно такие-же как и у func_door'а, только еще:
Distance (deg) - угол вращения. Поставите 90 - повернется на 90 градусов. Ну, вы поняли:).
Ну а остальное не трогайте...
Flags\флаги
Starts open - в начале раунда дверь будет открыта.
Revers dir - ставьте чтобы дверь открывалась в противоположную сторону.
Toggle - если отмечена, то после открытия двери она не закроется пока снова ее не активировать.
X asis и Y asis - ось по которой дверь будет открыватся. Короче, не трогайте эти флаги - не будет-же дверь у вас вверх или вниз открыватся:).
Use only - если отмечена, то дверь можно будет открыть только активировав (в игре).
Двери еще можно сделать со стеклом. Для этого "вырежьте" в
дверях (func_door_rotating) дырку, и вставьте туда другую дверь (тоже
func_door_rotating) с текстурой стекла. Далее нужно организовать
одновременное открытие дверей и стекла, и с одной скоростью. Тоесть,
стекло должно вертеться вместе с дверью, по такой-же оси, как будто
стекло и дверь, это одно целое, и скорость открытия обоих дверей должна
быть одинаковая. Потом, дайте одно имя и двери с дыркой, и
двери-стеклу, и открывайте их, например, с помощью триггера. Теперь
будет дверь со стеклом... НО! Стекло должно быть прозрачное. Для этого
просто измените параметры отображения двери-стекла на такие-же, как и у
обычного стекла (Render mode: Texture, FX amount: от 0 до 255
(прозрачность стекла)). Точно также, со стеклом, можно сделать не
вращающуюся дверь, а отъезжающую. Просто и дверь, и дверь-стекло должны
одновременно активироваться (с помощью имени), и вместе съезжать в одну
сторону, с одинаковой скоростью.
И напоследок еще одно важное примечание: если имя двери не
указано, тогда она будет открываться автоматически, когда игрок к ней
притронется (func_door_rotating будет открываться от игрока, как на
cs_militia).
Вот и разобрались с дверьми. Теперь попробуйте реализовать это на своей карте.