Ru/Creating rotating panels: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (Updated title)
m (obsolete language category)
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|title=Вращающиеся панели|Creating rotating panels}}
|title=Вращающиеся панели
== Способ A: Func_door_rotating ==
|en=Creating_rotating_panels
 
}}
1. Создайте браш с помощью [[File:Hammer block.png]] '''Block Tool''' в нужном размере панели. Не делайте его слишком тонким, так как порталы, размещённые на нём, будут давать помехи. Толщина в 8 единиц достаточно надёжна.
== Создание вращающейся панели  ==
 
2. Преобразуйте этот новый браш в энтити {{L|func_door_rotating}}. В данном руководстве мы назовём её "flip_panel".
 
3. В зависимости от вашего замысла, настройте ключевые значения:


1. Создайте [[prop_dynamic]] со следующими свойствами:
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Имя свойства || Значение || Комментарии
|-
| Name || flip_panel || Потребуется для подключения входа к панели.
|-
| Speed || 380 || Скорость вращения. Задайте любо значение по желанию. Для {{L|Portal 2 Puzzle Maker/Flip Panel|вращающейся панели}} в {{L|Portal_2_Puzzle_Maker|редакторе головоломок}} используется 380.
|-
| Start Sound || a3_jump_intro_rotating_panel_travel_01.wav || Вы можете назначить звук, который воспроизведётся, когда панель начнёт поворот. Дополнительную ambient_generic добавлять не нужно.
|-
| Stop Sound || a3_jump_intro_rotating_panel_arrival_01.wav || Звук, который воспроизведётся, когда панель остановится. Добавлять ambient_generic не нужно.
|-
|-
| Name || trans_panel
| Delay Before Reset (-1 stay) || -1 || После поворота панель вернётся в исходное положение по истечении определённого количества секунд, что задаётся здесь. Если задать -1, панель не повернётся обратно автоматически, а будет ожидать входа для этого.
|-
| Spawn Position || Closed || Можно задать либо Open, либо Closed. Неважно, какой вариант вы выберите, но дальнейшие входы зависят от того, что здесь указано. В данном руководстве мы выберем Closed.
|-
|-
| Pitch Yaw Roll (X Y Z) || 90 0 0
| Distance || 180 || Это угол, на который панель будет поворачиваться. Наша панель будет поворачиваться задом-наперёд, поэтому выберем значение 180 градусов.
|}
|}


Откройте браузер моделей и выбирите эту:
4. Найдите корректную ось поворота. Наш браш поворачивается на 180 градусов, но мы не указали, по какой оси он вращается, поэтому пока он просто меняет свои стороны. Самый лёгкий способ поиска оси описан в статье {{L|func_door_rotating}}:
 
===Указание точки вращения===
[[File:Door_rotate_2.jpg|right]]
Точку поворота можно задать путём изменения исходной точки энтити. Исходная точка определяет, где проходит ось вращения плоскости, представьте, что это дверная петля.  Если в настройках Hammer включен параметр ''show helpers'', исходная точка отображается в виде маленького белого кружка в центре энтити, который можно перетащить на новое расположение.


Итак, нужно найти ось, по которой браш будет вращаться. Лучший способ - подобрать нужный размер сетки и найти тот, который показывает, где именно мы хотим поместить исходную точку. После этого перетащите указатель в верхнюю левую часть вида, чтобы узнать, какой это вид, '''1'''.
В этом виде показано только две оси, отсутствующая ось - та, что нам нужна, и в нашем случае это '''Y'''.  В свойствах объекта двери перейдите к флагам, и установите флажок <code>Y Axis</code>. Кроме того, в двухмерном виде <code>func_door_rotating</code> по умолчанию вращается вокруг точки по часовой стрелке, нам нужно, чтобы она вращалась в другую сторону, поэтому на вкладке флагов в свойствах объекта также установим флажок <code>Reverse Dir</code>. Теперь переместите курсор на исходную точку, '''2'''.
5. Создайте входы, заставляющие панель вращаться. Например, используйте {{L|prop_floor_button}}.
::{| class=standard-table
::{| class=standard-table
Property Name || Value
My Output || Target Entity || Target Input
|-
|OnPressed || flip_panel || Open
|-
|OnUnPressed || flip_panel || Close
|-
|-
| World Model || models/anim_wp/simple_panel_transforms/simple_panel.mdl
|}
|}
----
[http://youtu.be/om50tkj8VAA Видеоролик с демонстрацией]
== Способ Б: Func_Brush как дочерний элемент вращающейся модели ==


Перейдите в раздел "model" и выбирите:
[[File:Rotatepanel.png|thumb|250px|right|Вид в Hammer]]
1. Создайте энтити {{L|prop_dynamic}} со следующими настройками:
::{| class=standard-table
::{| class=standard-table
Model
Название свойства || Значение
|-
| Name || trans_panel
|-
| Pitch Yaw Roll (X Y Z) || 90 0 0
|-
|-
| Sequence || BindPose
| World Model || models/anim_wp/simple_panel_transforms/simple_panel.mdl
|}
|}


 
2. Создайте браш любого желаемого размера (рекомендуется 64x16x64) и присоедините его к модели. Преобразуйте его в энтити {{L|func_brush}} со следующими настройками:
2. Создайте браш(любого размера) и задайте ей размеры вашей панели. Преобразуйте ее в [[func_brush]] со следующими свойствами:
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Название свойства || Значение
|-
|-
| Name || trans_brush
| Name || trans_brush
Line 40: Line 72:




3. Создайте [[logic_auto]] и установите output как показано ниже:
3. Создайте {{L|logic_auto}} рядом с созданным брашем (но не слишком близко) и создайте следующие выходы:
::{| class=standard-table
::{| class=standard-table
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnMapSpawn || trans_brush || SetParentAttachmentMaintainOffset || panel_attach || 0.00 || No
| [[File:Io11.png]] || OnMapSpawn || trans_brush || SetParentAttachmentMaintainOffset || panel_attach || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnMapSpawn || trans_panel || SetAnimation || BindPose || 0.00 || No
| [[File:Io11.png]] || OnMapSpawn || trans_panel || SetAnimation || BindPose || 0.00 || No
|}
|}




4. Создайте [[ambient_generic]] со следующими свойствами:
4. Создайте энтити {{L|ambient_generic}} со следующими настройками:
::{| class=standard-table
::{| class=standard-table
Property Name || Value
Название свойства || Значение
|-
|-
| Name || trans_sound_end
| Name || trans_sound_end
Line 62: Line 94:




5. Перейдите к [[prop_dynamic]] и установите output как показано ниже:
5. Вернитесь к энтити {{L|prop_dynamic}} и настройте выход следующим образом:
::{| class=standard-table
::{| class=standard-table
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnAnimationDone || trans_sound_end || PlaySound ||  || 0.00 || No
| [[File:Io11.png]] || OnAnimationDone || trans_sound_end || PlaySound ||  || 0.00 || No
|}
|}




6. Создайте [[prop_button]] и установите output как показано ниже:
6. Создайте энтити {{L|prop_button}} и настройте выход следующим образом:
::{| class=standard-table
::{| class=standard-table
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || trans_panel || SetAnimation || rotate_180 || 0.00 || No
| [[File:Io11.png]] || OnPressed || trans_panel || SetAnimation || rotate_180 || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnPressed || trans_panel || SetAnimation || rotate_180_reverse || 5.00 || No
| [[File:Io11.png]] || OnUnPressed || trans_panel || SetAnimation || rotate_180_reverse || 0.00 || No
|}
|}
Браш будет вращаться вместе с панелью. Вторая строка возвращает панель в исходное положение после определенной задержки.
Панель будет вращаться вместе с брашем. Вторая строка будет возвращать панель в исходную позицию после задержки.


Установите output "fire only once" как показано ниже
Вы также можете подключить вращающуюся панель ко входу любого типа. Настройте выходы так:
::{| class=standard-table
::{| class=standard-table
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
!  || My Output || Target Entity || Target Input || Parameter || Delay || Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || trans_panel || rotate_180 || panel_attach || 0.00 || Yes
| [[File:Io11.png]] || <ваш выход> || trans_panel || SetAnimation || rotate_180 || 0.00 || No
|-
| [[File:Io11.png]] || <ваш выход> || trans_panel || SetAnimation || rotate_180_reverse || 0.00 || No
|}
|}
кроме [[prop_button]] вы можете использовать [[trigger]]
----
----
[http://forums.thinkingwithportals.com/downloads.php?view=detail&df_id=369 Скачать panels_rotate Prefab]


[http://www.youtube.com/watch?v=Mxk9xPbsC6E Предпросмотр]
[http://forums.thinkingwithportals.com/downloads.php?view=detail&df_id=369 Скачать префаб panels_rotate]
 
[http://www.youtube.com/watch?v=Mxk9xPbsC6E Демонстрационный видеоролик]
 
==Сравнение способов==
 
На первый взгляд настройка func_door_rotating по способу A может показаться сложной, но этот метод имеет преимущество в том, что он экономит две ambient_generic, одну prop_dynamic и множество входов для иерархии и поворота.
 
Однако, в отличие от способа Б, есть и недостаток: анимация поворота simple_panel имеет "живой" эффект качания панели после поворота, а func_door_rotating после поворота просто останавливается.


== Смотрите также ==
== См. также ==
* [[Panels]]
* {{L|Panels|Панели}}


[[Category:Portal 2 Level Design]]
{{ACategory|Portal 2 Level Design}}
[[Category:Portal 2 Tutorials]]
{{ACategory|Portal 2 Tutorials}}

Latest revision as of 03:44, 22 August 2024

English (en)Русский (ru)Translate (Translate)

Способ A: Func_door_rotating

1. Создайте браш с помощью Hammer block.png Block Tool в нужном размере панели. Не делайте его слишком тонким, так как порталы, размещённые на нём, будут давать помехи. Толщина в 8 единиц достаточно надёжна.

2. Преобразуйте этот новый браш в энтити func_door_rotating(en). В данном руководстве мы назовём её "flip_panel".

3. В зависимости от вашего замысла, настройте ключевые значения:

Имя свойства Значение Комментарии
Name flip_panel Потребуется для подключения входа к панели.
Speed 380 Скорость вращения. Задайте любо значение по желанию. Для вращающейся панели(en) в редакторе головоломок(en) используется 380.
Start Sound a3_jump_intro_rotating_panel_travel_01.wav Вы можете назначить звук, который воспроизведётся, когда панель начнёт поворот. Дополнительную ambient_generic добавлять не нужно.
Stop Sound a3_jump_intro_rotating_panel_arrival_01.wav Звук, который воспроизведётся, когда панель остановится. Добавлять ambient_generic не нужно.
Delay Before Reset (-1 stay) -1 После поворота панель вернётся в исходное положение по истечении определённого количества секунд, что задаётся здесь. Если задать -1, панель не повернётся обратно автоматически, а будет ожидать входа для этого.
Spawn Position Closed Можно задать либо Open, либо Closed. Неважно, какой вариант вы выберите, но дальнейшие входы зависят от того, что здесь указано. В данном руководстве мы выберем Closed.
Distance 180 Это угол, на который панель будет поворачиваться. Наша панель будет поворачиваться задом-наперёд, поэтому выберем значение 180 градусов.

4. Найдите корректную ось поворота. Наш браш поворачивается на 180 градусов, но мы не указали, по какой оси он вращается, поэтому пока он просто меняет свои стороны. Самый лёгкий способ поиска оси описан в статье func_door_rotating(en):

Указание точки вращения

Door rotate 2.jpg

Точку поворота можно задать путём изменения исходной точки энтити. Исходная точка определяет, где проходит ось вращения плоскости, представьте, что это дверная петля. Если в настройках Hammer включен параметр show helpers, исходная точка отображается в виде маленького белого кружка в центре энтити, который можно перетащить на новое расположение.

Итак, нужно найти ось, по которой браш будет вращаться. Лучший способ - подобрать нужный размер сетки и найти тот, который показывает, где именно мы хотим поместить исходную точку. После этого перетащите указатель в верхнюю левую часть вида, чтобы узнать, какой это вид, 1. В этом виде показано только две оси, отсутствующая ось - та, что нам нужна, и в нашем случае это Y. В свойствах объекта двери перейдите к флагам, и установите флажок Y Axis. Кроме того, в двухмерном виде func_door_rotating по умолчанию вращается вокруг точки по часовой стрелке, нам нужно, чтобы она вращалась в другую сторону, поэтому на вкладке флагов в свойствах объекта также установим флажок Reverse Dir. Теперь переместите курсор на исходную точку, 2.


5. Создайте входы, заставляющие панель вращаться. Например, используйте prop_floor_button(en).

My Output Target Entity Target Input
OnPressed flip_panel Open
OnUnPressed flip_panel Close

Видеоролик с демонстрацией

Способ Б: Func_Brush как дочерний элемент вращающейся модели

Вид в Hammer

1. Создайте энтити prop_dynamic(en) со следующими настройками:

Название свойства Значение
Name trans_panel
Pitch Yaw Roll (X Y Z) 90 0 0
World Model models/anim_wp/simple_panel_transforms/simple_panel.mdl

2. Создайте браш любого желаемого размера (рекомендуется 64x16x64) и присоедините его к модели. Преобразуйте его в энтити func_brush(en) со следующими настройками:

Название свойства Значение
Name trans_brush
Parent trans_panel


3. Создайте logic_auto(en) рядом с созданным брашем (но не слишком близко) и создайте следующие выходы:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn trans_brush SetParentAttachmentMaintainOffset panel_attach 0.00 No
Io11.png OnMapSpawn trans_panel SetAnimation BindPose 0.00 No


4. Создайте энтити ambient_generic(en) со следующими настройками:

Название свойства Значение
Name trans_sound_end
Sound name World.SpeedFlingRotatingPanelStop
Volume 2


5. Вернитесь к энтити prop_dynamic(en) и настройте выход следующим образом:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnAnimationDone trans_sound_end PlaySound 0.00 No


6. Создайте энтити prop_button(en) и настройте выход следующим образом:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed trans_panel SetAnimation rotate_180 0.00 No
Io11.png OnUnPressed trans_panel SetAnimation rotate_180_reverse 0.00 No

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

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

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png <ваш выход> trans_panel SetAnimation rotate_180 0.00 No
Io11.png <ваш выход> trans_panel SetAnimation rotate_180_reverse 0.00 No

Скачать префаб panels_rotate

Демонстрационный видеоролик

Сравнение способов

На первый взгляд настройка func_door_rotating по способу A может показаться сложной, но этот метод имеет преимущество в том, что он экономит две ambient_generic, одну prop_dynamic и множество входов для иерархии и поворота.

Однако, в отличие от способа Б, есть и недостаток: анимация поворота simple_panel имеет "живой" эффект качания панели после поворота, а func_door_rotating после поворота просто останавливается.

См. также