Меню сайта


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Поиск

add_newДобавить новость
Последние добавленные
Название игры: S.I.P: Out Life
Жанр: FPS, с элементами RPG
Язык: с++, скрипты lua
G API: DirectX 9
Сайт: sip-game.su
Группа Vk: vk....
Читать далее

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Статьи
Туториалы
Маппинг
Goldsrc
Создание карт
Двери

Сдвигающиеся и вращающиеся двери



Сдвигающиеся и вращающиеся двери
Добавил: root
2013-01-07 12:56:03
38 просмотров

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

1. Сдвигающиеся двери

Наиболее просто изготовить сдвигающуюся в сторону дверь. С такого типа дверей мы и начнем.

Активировать, т.е. открывать сдвигающуюся дверь можно несколькими способами, вот основные из них:

– дотрагиванием до двери или нажатием на «Use» (по умолчанию «E»)
– кнопкой
– триггером

a) открытие двери дотрагиванием

Предположим мы хотим создать дверь в этом проеме (см. рис. ниже). Для этого выберем подходящую текстуру двери (например, C1A0B_DR4A) и построим браш по размерам равный проему. Следует заметить, что стандартными размерами дверей в Half-Life являются 96х64х8 (т.е. 96 юнитов по высоте, 64 по ширине и 4 или 8 по толщине). Естественно это не строгое правило.

Создаем дверь



Теперь выделим браш и превратим его [Ctrl-T] в энтити-объект func_door. Дверь готова! Осталось только определить ее свойства, такие как: направление и скорость движения, звуки при движении и остановке, время до автоматического закрытия и т.д.

Angle — здесь указывается направление движения двери. Чтобы правильно его определить, поставьте вид сверху (2D top), тогда движение налево будет соответствовать 180°, направо — 0°. Если необходимо, чтобы дверь поднималась вверх или опускалась вниз, то выберите в списке Up или Down соответственно;

Speed — скорость движения двери (по умолчанию 100, нормальная скорость);

Move Sound — звук при движении двери, можно не указывать;

Stop Sound — звук остановки двери, также можно не указывать;

Delay before close — время в секундах, в течении которого дверь будет открыта, потом она автоматически закроется. Если необходимо чтобы дверь не закрывалась поставьте здесь значение «-1» или фо флагах отметьте «Toggle» (см. ниже). По умолчанию дверь закрывается через 4 секунды.

Health (shoot open) — «прочность» двери. Если указать значение больше нуля (> 0), то дверь откроется, только после нанесения ей указанного значения повреждений. Например, если указать Health = 100, то дверь откроется после 4-5 выстрелов из автомата. По умолчанию значение 0.

Lip — этим параметром можно изменить расстояние, на которое открывается дверь. По умолчанию дверь открывается на свою ширину, т.е. если дверь имеет ширину 64 юнита, то и откроется она на 64 юнита. Формула очень простая: Расстояние = (Ширина двери - Lip), т.е. если параметр Lip положительный, то дверь откроется на расстояние меньшее своей ширины, а если — отрицательный, то, соответственно, на большее.

Для чего нужен Lip? Когда дверь открывается полностью, то ее видимая боковая сторона совпадает со стеной, в которую дверь задвинулась, что создает не очень красивый эффект (попробуйте :). Если задать параметр Lip, скажем, в 2 юнита, то дверь будет выглядывать из стены на 2 юнита, и некрасивого эффекта уже не будет.

Остальные параметры не так важны.

Теперь рассмотрим флаги.

Starts Open — отметьте этот флаг, если необходимо, чтобы дверь была открыта в начале раунда
Passable — через дверь можно будет проходить (врядли нужно для нормальной двери)
Toggle — если у двери есть имя (Name), то ее можно будет открывать и закрывать при помощи кнопки или триггера (см. ниже). Дверь с установленным флагом Toggle не будет автоматически закрываться
Use Only — если отметить, то дверь будет открываться только при нажатии на «Use» (по умолчанию кнопка «E»).


б) открытие двери нажатием на кнопку

Дверь, рассмотренная выше, открывается при дотрагивании до нее. Рассмотрим теперь открытие двери от нажатия кнопки.

Изготовьте точно такую же дверь. Единственным отличием этой двери от рассмотренной выше будет наличие имени (Name). Чтобы дверь можно было открывать кнопкой, ей необходимо присвоить какое-нибудь имя, например, sliding_door1.

Теперь изготовим собственно кнопку. Кнопкой у нас будет браш с размерами 12х12х4 юнита (см. рис. ниже), окрашенный текстурой +0BUTTON1 и расположенный на стене рядом с дверью. Естественно простой браш работать не будет, поэтому превратим его [Ctrl-T] в кнопку func_button.

Создаем кнопку, при нажатии на которую, откроется дверь



Свойства кнопки в данном случае очень простые:

Targetted object — sliding_door1 (здесь мы указываем, что при нажатии кнопки будет открыта дверь по имени sliding_door1)

Delay before reset — время в секундах, в течении которого кнопка не будет действовать, после того, как была нажата. По умолчанию: 3 секунды, можно поставить 0.

Флаги:

Don't Move — если отметить этот флаг, то кнопка не будет вдавливаться в стену, но активация двери все же произойдет. Естественно, если Вы хотите, то можете не отмечать этот флаг, но тогда необходимо будет указать в парметре «Angle» направление движения (вжатия) кнопки, скорость и т.д.


в) открытие двери прохождением через триггер

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

Итак, дверь у нас уже есть. Назовем ее sliding_door2. Теперь создадим браш, окрашенный специальной текстурой AAATrigger и разместим его в центре двери (см. рис. ниже).

Создаем триггер, при активации которого, откроется дверь



Браш необходимо делать немного бОльшим, чем дверь, чтобы игрок касался его с любой стороны двери (см. вид top (x/y) на рис. выше).

Выделите браш и нажмите [Ctrl-T], в списке выберите trigger_multiple. Данный тип триггера позволяет активировать объект многократно.

Выставим свойства триггера.

Target — sliding_door2 (здесь указывается имя двери, которую будет открывать триггер);

Delay before reset — время в секундах, в течении которого триггер работать не будет после того, как был активирован. По умолчанию 10 секунд, однако в нашем случае с дверью, наилучшим будет значение 0, чтобы дверь открывалась всегда, когда игрок проходит через триггер.

Delay before trigger — время в секундах, до активации объекта (до открытия двери). Например, если здесь указать 5 секунд, то дверь будет открыта только через 5 секунд, после прохождения игрока через триггер. Для двери лучше поставить 0 секунд, чтобы дверь открывалась мгновенно, без задержек.

Остальные параметры можно не изменять. Все — дверь готова. Когда игрок пройдет через триггер (причем не важно с какой стороны, ведь триггер "выглядывает" с двух сторон двери), дверь откроется.


2. Вращающиеся двери

Вращающиеся двери немного сложнее в изготовлении и имеют больше свойств, но ничего страшного нет :)

a) открытие двери дотрагиванием

Изготовьте браш, который будет дверью.

Так как дверь (в данном случае) вращающийся объект, то для нее необходимо определить ось вращения. Делается это при помощи ORIGIN-браша, т.е. браша со всех сторон окрашенного специальной текстурой ORIGIN.

Необходимо правильно размещать ORIGIN-браш, т.к. от этого зависит как дверь будет вращаться. Чтобы при открытии дверь «не вьезжала» в стену, ORIGIN-браш должен располагаться на виде сверху так, как показано на рисунке ниже.

Определяем месторасположение ORIGIN-браша



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

Выделите дверь (пока что дверь это простой браш) и ORIGIN-браш (во время выделения зажмите клавишу Ctrl), нажмите [Ctrl-T] и в списке выберите func_door_rotating. Дверь готова! Все что остается сделать - это определить параметры вращения двери. Большинство параметров совпадает с параметрами сдвигающей двери func_door, поэтому рассмотрим только новые.

Distance (deg) — угол поворота двери в градусах. По умолчанию дверь поворачивается на 90 градусов, что вполне нормально.

Теперь рассмотрим флаги.

Starts Open — если отметить, то дверь в начале раунда будет открыта;
Reverse Dir — по умолчанию дверь открывается «от игрока», если отметить этот флаг, то она будет открываться «на игрока». В случае с открытием двери кнопкой или триггером этот флаг просто меняет направление открытия двери на противоположное;
Passable — если отмечено, то через дверь можно будет свободно проходить;
One-way — дверь будет открываться только в какую-то одну сторону (независимо от того, с какой стороны подошел к ней игрок);
Toggle — если у двери есть имя и открытие происходит от кнопки или триггера, то она не будет автоматически закрываться. Чтобы закрыть дверь, нужно будет повторно нажать на кнопку или пройти через триггер;
X-Axis, Y-Axis — этими флагами определяется ось, относительно которой будет вращаться дверь. По умолчанию, если ничего не отмечать, дверь вращается вокруг вертикальной оси Z, т.е. как обычно. Подробнее о выборе оси вращения Вы можете прочитать в статье «Вращающийся свет». В этой статье рассмотрен принцип определения оси вращения, который может быть применен к любому вращающемуся объекту;
Use Only — если отметить этот флаг, то дверь будет открываться только от нажатия на «Use» (по умолчанию кнопка «E»).


б) открытие двери от кнопки или триггера

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


doors.zip [37Кб] — в архиве карта-пример в форматах BSP и RMF.

§ 10.1 Сдвигающиеся и вращающиеся двери
§ 10.2 Двери со стеклом
§ 10.3 Специальные двери (momentary_door)

Поделиться:
Тэги:

DS-Servers.com
Copyright © 2012-2016. All Rights Reserved.
При копировании материала ссылка на источник обязательна
За материалы, размещенные пользователями, администрация сайта ответственности НЕ несет