Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава X. Двери.

§ 10.2 Двери со стеклом

В этой статье мы рассмотрим создание дверей со стеклом, как сдвигающихся, так и вращающихся. Мы предполагаем, что Вы хорошо освоили создание обычных дверей этих двух типов, а также поняли принцип действия триггера trigger_multiple.

1. Сдвигающиеся двери со стеклом

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

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

На самом деле мы создадим две двери: одну в виде двери с отверстием, другую как стеклянную вставку. Чтобы возникла иллюзия одной двери, мы дадим дверям одинаковые имена и будем активировать их одновременно одним триггером. Итак, приступим к обману простого игрока, думающего, что дверь одна! :)

Построим дверь с размерами 96х64х8 юнитов с отверстием 48х36 юнитов. Для закраски мы использовали текстуру FIFTIES_DR9. Чтобы текстура хорошо подходила, толщину (высоту) верхней балки двери мы сделали 6 юнитов, а двух боковых - по 8. В итоге наша дверь будет состоять из 4-х отдельных брашей (см. рис. ниже).

Создаем дверь с отверстием


Выставим следующие свойства:

Name - sliding_door1 (это имя мы будем использовать для открытия двери, а точнее двух дверей одновременно триггером);
Move sound - pneumatic (звук при движении двери, можно не указывать);
Delay before close - 4 (через 4 секунды дверь закроется автоматически);
Lip - <2> (дверь будет <выглядывать> из стены на 2 юнита в открытом положении);
Speed - 100 (скорость движения двери, по умолчанию);

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

Первая дверь готова. Теперь сделаем вторую (прозрачную в игре) дверь (см. рис. ниже). Будем использовать текстуру GLASSGREEN (на рисунке практически черная). Размеры второй стеклянной двери естественно равны размерам отверстия. В нашем случае 48х36х8 юнитов.

Создаем вторую (стеклянную) дверь


Выставьте точно такие же свойства как и для первой двери (т.е. тот же угол, то же имя sliding_door1, delay before close: 4, speed: 100). Остальные свойства следует изменить.

Move sound - No sound (второй звук открывающейся двери нам не нужен - он уже задан для первой двери);
Render Mode - Texture (этот режим необходим, чтобы стекло стало прозрачным);
FX Amount - 80 (чем ближе значение к 0, тем стекло прозрачнее и наооборот, чем ближе к 255, тем - непрозрачней);
Lip <-14> (минус 14);

Почему именно такой Lip? Так как ширина у дверей разная, то и Lip должен быть разным. У стеклянной двери он должен быть больше (т.е. отрицательным). Если Lip у стеклянной двери будет отрицательным, то она продвинется дальше, чем на расстояние своей ширины.

Нам необходимо указать такой Lip для стеклянной двери, чтобы она, задвинулась в стену и при этом не изменила своего положения по отношению к основной двери. Посмотрите на рисунок ниже.

Принцип определения параметра Lip для внутренней стеклянной двери


Это вид сверху. Черное - основная дверь (<рамка>), розовое - внутренняя стеклянная дверь, серое - стенка. Итак, искомый Lip будет равен расстоянию со знаком вопроса минус Lip основной двери (<рамки>).

Теперь необходимо изготовить триггер, который будет активировать обе двери одновременно (см. рис. ниже). Используем для этого trigger_multiple, как и в случае с простыми дверями.

Размещаем триггер для активации обеих дверей одновременно


В свойствах триггера в запишем имя дверей (оно одинаковое), а также выставим : 0.

Сдвигающаяся дверь со стеклом готова!


2. Вращающиеся двери со стеклом

Принцип построения вращающихся дверей со стеклом точно такой же. Основная трудность заключается в правильном определении места положения ORIGIN-брашей.

На рисунке ниже Вы можете видеть дверь, состоящую из 7 брашей и имеющую 2 отверстия для стекол (примечание: такую дверь можно изготовить и из 5-ти брашей, но это не принципиально). Размеры двери, как и в первом случае 96х64х8 юнитов, толщина <рамки> везде по 8 юнитов.

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

Создаем дверь с двумя отверстиями и определяем положение ORIGIN-браша


На виде сверху хорошо видно положение центра ORIGIN-браша (см. рис. ниже). При таком расположении дверь будеть правильно открываться в обе стороны, не въезжая в стену (косяк). Стрелками показаны обе двери: и внутренняя стеклянная (пока что мы ее не сделали) и внешняя (<рамка>).

Так необходимо размещать ORIGIN-браши обеих дверей на виде сверху


Чтобы сделать дверь, выделите с зажатым Ctrl все 7 брашей и ORIGIN-браш. Затем нажмите [Ctrl-T] и в списке выберите func_door_rotating.

Выставим для двери следующие свойства:

Name - rotating_door1 (это имя мы будем использовать для открытия двери, а точнее двух дверей одновременно триггером);
Move sound - vacuum (звук при движении двери, можно не указывать);
Delay before close - 4 (через 4 секунды дверь закроется автоматически);
Distance (deg) - 90 (угол поворота двери);
Speed - 100 (скорость движения двери, по умолчанию);

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

Создаем вторую (стеклянную) вращающуюся дверь


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

Теперь различия:

Move sound - No sound (второй звук открывающейся двери нам не нужен - он уже задан для первой двери);
Render Mode - Texture (этот режим необходим, чтобы стекло стало прозрачным);
FX Amount - 80 (чем ближе значение к 0, тем стекло прозрачнее и наооборот, чем ближе к 255, тем - непрозрачней).

Все что осталось сделать, это построить trigger_multiple, как и в первой случае. В свойствах в параметр следует вписать имя обеих дверей (оно одинаково): rotating_door1, а также поставить : 0 (чтобы триггер <обнулялся> мгновенно).

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

Не забывайте менять параметры у обеих дверей симметрично, иначе синхронность будет потеряна. Ну, и как всегда, если что-то осталось непонятным, Вы всегда можете скачать нашу карту-пример. В архиве находится как исходник карты в формате RMF, так и уже откомпилированная BSP карта.


Ссылки

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


Глава X. Двери.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0036 ]