Ru/Door creation: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
(Я создал страничку с переводом, вместо того, чтобы делать карту на контру)
 
m (obsolete language category)
 
(13 intermediate revisions by 9 users not shown)
Line 1: Line 1:
В создании дверьки нет ничего сложного. Дверьки есть двух видов: В виде браша или энтити. По моему мнению, создание ентитей легче, потому что не надо дополнительно всяких параметров менять. Создание дверки ентитей:
{{lang|title=Создание двери|Door creation}}
{{Warning|Английская версия и эта версия не содержат одинаковой информации. Пожалуйста, извините за это несоответствие, так как мы работаем над переводом..}}
{{todo|Пожалуйста, переведите сюда английскую статью, а также перенесите изображения.}} <br>
Создание двери брашевого типа.


1. Создайте точечную энтитю prop_door_rotating где нибудь.  
== Начало ==
Чтобы сделать дверь на основе браша, для начала создайте отверстие в стене. Загляните в статью про различные игровые {{L|dimensions|константы}}, чтобы точно подогнать отверстие под будущую дверь.  Чтобы сделать такое отверстие, разделите стену на две половины и разместите небольшой {{L|brush|браш}} над пространством будущей двери. Убедитесь, что под этим пространством есть пол, иначе будет {{L|leak|утечка}}.


2. Alt+Enter, окошко параметров, World model, в поле фильтр наберите door, ну там выберите дверьку по вкусу, мне нравится стандартная :-). ОК'еюшки, дверька создана, там немного поправьте ее по высоте.
[[File:Door creation 1.png]]


3. Создание дырки в стене для дверьки. Выделите дверьку, и, внимание!! не выбирая ничего другого, нажмите кнопочку Block Tool. обведите форму дверьки на любой проекции и сделайте браш длинной (не высотой и широтой!) равную(!) длине (то бишь толщиной стенки). Нажмите правой кнопкой мыши по брашу (он у Вас должен быть уже в стене, и так, чтобы он полностью был внутри стены). Убедитесь в том, что браш полностью опоясывает толщину браша, и нажмите волшебную кнопочку Carve. Он создаст булево. Теперь браш можете удалить, а можете и оставить в недоступной части карты, чтобы ещё дверек напихать))).
== Создание браша двери ==
Создайте браш и заполните им все пустое пространство в стене. Желательно покрыть его текстурой, отличной от текстуры стены, хорошо подойдет, к примеру, текстура древесного типа.


4. Ну воть, вставляете дверь в отверстие, можете поиграть с параметрами некоторыми.
[[File:Door creation 2.png]]


А делать двери брашем, думаю вам будет неинтересно))).
== Превращение браша в дверь ==
Чтобы сделать из браша дверь, выделите его на одном из окон развертки и щелкните правой кнопкой мыши. Выберите пункт "Tie to entity" и из появившегося списка выберите {{L|func_door_rotating}} для обычной двери или {{L|func_door}} для двери, открывающейся скольжением вверх или вниз. Во втором случае прокрутите вниз окно опций, и вы увидите пункт "Move Direction (Pitch Yaw Roll)" - направление движения; щелкните на нем и выберите вариант 'up' или 'down' в небольшом окошке справа. В случае же с обычной, открывающейся поворотом дверью, вам понадобится настроить центр вращения(синий шарик, его видно в окне трехмерного вида), используя окно развертки или пункт "origin" в окне свойств объекта.


Сождаём браш, делаете дырку, но не удаляем браш, нажимаем кнопку To Entity, выбираем func_door_rotating ну а там настройки делаете, и всё.
Теперь у нас есть функционирующая дверь. Чтобы открыть такую уже непосредственно в игре, просто подойдите. Чтобы заставить дверь открываться по нажатию кнопки "использовать", дважды щелкните по двери в окне трехмерного вида и из горизонтального списка вверху выберите панель "flags". Поставьте галочку рядом с надписью "use opens" и уберите аналогичную напротив строки "touch opens".
 
== Создание кнопки для управления дверью ==
Дайте вашей двери имя, что-нибудь типа <code>door1</code>. Чтобы сделать кнопку, создайте небольшой браш, разместите его в любом доступном месте и через команду ''Tie to Entity'' превратите его в {{L|func_button}}. Назовите получившуюся кнопку аналогичным образом, например, <code>door1_button</code>. Нажмите кнопку "Apply", выберите панель "Outputs" и нажмите "Add Output". Отредактируйте output следующим образом:
:{| {{OutputsTable}}
| [[File:Io11.png]] || OnPress || door1 || Open || &nbsp; || 0.00 || No
|}
<br>
Затем ещё раз нажмите "Apply".<br>
Когда будете тестировать карту, подойдите к кнопке и нажмите клавишу "использовать". После этого дверь должна открыться.
 
== Создание двойных дверей ==
Чтобы сделать две скользящие или вращающиеся двери, открывающиеся синхронно, вам понадобится комбинация из output'ов и двух объектов {{L|logic_relay}}(прим. переводчика: на самом деле в этом нет особой необходимости, достаточно лишь дать обеим дверям одинаковое имя). Во-первых, способом, изложенным выше, создайте две двери и назовите их схожим образом, например, <code>door1</code> и <code>door2</code>. Во-вторых, добавьте два logic_relay где-нибудь поблизости(расположение не имеет решающего значения, но для простоты имеет смысл держать их поближе) и назовите аналогично, например, <code>door1_relay</code> и <code>door2_relay</code>. В-третьих, откройте окно свойств первой двери, зайдите на панель "Outputs" и добавьте такой output:
:{| {{OutputsTable}}
| [[File:Io11.png]] || OnOpen || door2 || Open || &nbsp; || 0.00 || No
|}
<br>
Проделайте то же самое со второй дверью, только в поле "Target Entity" впишите <code>door1</code>. Теперь, когда одна из дверей будет открыта каким-либо способом, вместе с ней автоматически откроется и вторая. На этот моменте вы вполне можете сохранить и протестировать карту, но мы ещё не закончили - мы заставили двери открываться вместе, но не закрываться. Для этого нам и понадобятся logic_relay.
<br>
<br>
Вы, должно быть, сейчас думаете, что вполне можете обойтись без logic_relay, всего лишь написав аналогичные output'ы и для закрытия дверей, как изложено выше. К сожалению, не выйдет. Можете попробовать, но скоро убедитесь, что игра вылетает при попытке закрыть одну из дверей. Придется нам задействовать logic_relay. Если вы следовали инструкциям выше, у вас уже должны быть два таких объекта, размещенных и названных. Откройте свойства первой двери и создайте следующий output:
:{| {{OutputsTable}}
| [[File:Io11.png]] || OnClose || door1_relay || Trigger || &nbsp; || 0.00 || No
|}
<br>
Проделайте то же самое со второй дверью, заменив Target Entity на <code>door2_relay</code>. Теперь откройте свойства первого logic_relay и добавьте такой output:
:{| {{OutputsTable}}
| [[File:Io11.png]] || OnTrigger || door2 || Close || &nbsp; || 0.00 || No
|}
<br>
Повторить со вторым logic_relay, заменив Target Entity на <code>door1</code>. Теперь можете сохранить карту, скомпилировать ее и пойти похлопать установленными дверьми.
<br>
<br>
Чтобы лучше понять механизм взаимодействия Output'ов и logic_relay, изучите следующую таблицу:
 
Игрок открывает <code>door1</code>
-->Открытие <code>door1</code> цепляет <code>door2</code>, заставляя открыться через Output
 
Игрок открывает <code>door2</code>
-->Открытие <code>door2</code> цепляет <code>door1</code>, заставляя открыться через Output
 
Игрок закрывает <code>door1</code>
-->Закрытие <code>door1</code> цепляет <code>door1_relay</code>
-->Зацепка <code>door1_relay</code> цепляет <code>door2</code>, заставляя закрыться
 
Игрок закрывает <code>door2</code>
-->Закрытие <code>door2</code> цепляет <code>door2_relay</code>
-->Зацепка <code>door2_relay</code> цепляет <code>door1</code>, заставляя закрыться
 
{{ACategory|Level Design}}
{{ACategory|Tutorials}}

Latest revision as of 03:45, 22 August 2024

English (en)Русский (ru)Translate (Translate)
Warning.pngПредупреждение:Английская версия и эта версия не содержат одинаковой информации. Пожалуйста, извините за это несоответствие, так как мы работаем над переводом..
Нужно сделать: Пожалуйста, переведите сюда английскую статью, а также перенесите изображения.


Создание двери брашевого типа.

Начало

Чтобы сделать дверь на основе браша, для начала создайте отверстие в стене. Загляните в статью про различные игровые константы(en), чтобы точно подогнать отверстие под будущую дверь. Чтобы сделать такое отверстие, разделите стену на две половины и разместите небольшой браш(en) над пространством будущей двери. Убедитесь, что под этим пространством есть пол, иначе будет утечка(en).

Door creation 1.png

Создание браша двери

Создайте браш и заполните им все пустое пространство в стене. Желательно покрыть его текстурой, отличной от текстуры стены, хорошо подойдет, к примеру, текстура древесного типа.

Door creation 2.png

Превращение браша в дверь

Чтобы сделать из браша дверь, выделите его на одном из окон развертки и щелкните правой кнопкой мыши. Выберите пункт "Tie to entity" и из появившегося списка выберите func_door_rotating(en) для обычной двери или func_door(en) для двери, открывающейся скольжением вверх или вниз. Во втором случае прокрутите вниз окно опций, и вы увидите пункт "Move Direction (Pitch Yaw Roll)" - направление движения; щелкните на нем и выберите вариант 'up' или 'down' в небольшом окошке справа. В случае же с обычной, открывающейся поворотом дверью, вам понадобится настроить центр вращения(синий шарик, его видно в окне трехмерного вида), используя окно развертки или пункт "origin" в окне свойств объекта.

Теперь у нас есть функционирующая дверь. Чтобы открыть такую уже непосредственно в игре, просто подойдите. Чтобы заставить дверь открываться по нажатию кнопки "использовать", дважды щелкните по двери в окне трехмерного вида и из горизонтального списка вверху выберите панель "flags". Поставьте галочку рядом с надписью "use opens" и уберите аналогичную напротив строки "touch opens".

Создание кнопки для управления дверью

Дайте вашей двери имя, что-нибудь типа door1. Чтобы сделать кнопку, создайте небольшой браш, разместите его в любом доступном месте и через команду Tie to Entity превратите его в func_button(en). Назовите получившуюся кнопку аналогичным образом, например, door1_button. Нажмите кнопку "Apply", выберите панель "Outputs" и нажмите "Add Output". Отредактируйте output следующим образом:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPress door1 Open   0.00 No


Затем ещё раз нажмите "Apply".
Когда будете тестировать карту, подойдите к кнопке и нажмите клавишу "использовать". После этого дверь должна открыться.

Создание двойных дверей

Чтобы сделать две скользящие или вращающиеся двери, открывающиеся синхронно, вам понадобится комбинация из output'ов и двух объектов logic_relay(en)(прим. переводчика: на самом деле в этом нет особой необходимости, достаточно лишь дать обеим дверям одинаковое имя). Во-первых, способом, изложенным выше, создайте две двери и назовите их схожим образом, например, door1 и door2. Во-вторых, добавьте два logic_relay где-нибудь поблизости(расположение не имеет решающего значения, но для простоты имеет смысл держать их поближе) и назовите аналогично, например, door1_relay и door2_relay. В-третьих, откройте окно свойств первой двери, зайдите на панель "Outputs" и добавьте такой output:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnOpen door2 Open   0.00 No


Проделайте то же самое со второй дверью, только в поле "Target Entity" впишите door1. Теперь, когда одна из дверей будет открыта каким-либо способом, вместе с ней автоматически откроется и вторая. На этот моменте вы вполне можете сохранить и протестировать карту, но мы ещё не закончили - мы заставили двери открываться вместе, но не закрываться. Для этого нам и понадобятся logic_relay.

Вы, должно быть, сейчас думаете, что вполне можете обойтись без logic_relay, всего лишь написав аналогичные output'ы и для закрытия дверей, как изложено выше. К сожалению, не выйдет. Можете попробовать, но скоро убедитесь, что игра вылетает при попытке закрыть одну из дверей. Придется нам задействовать logic_relay. Если вы следовали инструкциям выше, у вас уже должны быть два таких объекта, размещенных и названных. Откройте свойства первой двери и создайте следующий output:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnClose door1_relay Trigger   0.00 No


Проделайте то же самое со второй дверью, заменив Target Entity на door2_relay. Теперь откройте свойства первого logic_relay и добавьте такой output:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger door2 Close   0.00 No


Повторить со вторым logic_relay, заменив Target Entity на door1. Теперь можете сохранить карту, скомпилировать ее и пойти похлопать установленными дверьми.

Чтобы лучше понять механизм взаимодействия Output'ов и logic_relay, изучите следующую таблицу:

Игрок открывает door1 -->Открытие door1 цепляет door2, заставляя открыться через Output

Игрок открывает door2 -->Открытие door2 цепляет door1, заставляя открыться через Output

Игрок закрывает door1 -->Закрытие door1 цепляет door1_relay -->Зацепка door1_relay цепляет door2, заставляя закрыться

Игрок закрывает door2 -->Закрытие door2 цепляет door2_relay -->Зацепка door2_relay цепляет door1, заставляя закрыться