Ru/Creating rotating panels

== Способ A: Func_door_rotating ==
1. Создайте браш с помощью Block Tool в нужном размере панели. Не делайте его слишком тонким, так как порталы, размещённые на нём, будут давать помехи. Толщина в 8 единиц достаточно надёжна.
2. Преобразуйте этот новый браш в энтити . В данном руководстве мы назовём её "flip_panel".
3. В зависимости от вашего замысла, настройте ключевые значения:
::
Имя свойства 	Значение 	Комментарии
Name 	flip_panel 	Потребуется для подключения входа к панели.
Speed 	380 	Скорость вращения. Задайте любо значение по желанию. Для в используется 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 градусов, но мы не указали, по какой оси он вращается, поэтому пока он просто меняет свои стороны. Самый лёгкий способ поиска оси описан в статье :
===Указание точки вращения===
Точку поворота можно задать путём изменения исходной точки энтити. Исходная точка определяет, где проходит ось вращения плоскости, представьте, что это дверная петля. Если в настройках Hammer включен параметр show helpers, исходная точка отображается в виде маленького белого кружка в центре энтити, который можно перетащить на новое расположение.
Итак, нужно найти ось, по которой браш будет вращаться. Лучший способ - подобрать нужный размер сетки и найти тот, который показывает, где именно мы хотим поместить исходную точку. После этого перетащите указатель в верхнюю левую часть вида, чтобы узнать, какой это вид, 1. 
В этом виде показано только две оси, отсутствующая ось - та, что нам нужна, и в нашем случае это Y. В свойствах объекта двери перейдите к флагам, и установите флажок Y Axis. Кроме того, в двухмерном виде func_door_rotating по умолчанию вращается вокруг точки по часовой стрелке, нам нужно, чтобы она вращалась в другую сторону, поэтому на вкладке флагов в свойствах объекта также установим флажок Reverse Dir. Теперь переместите курсор на исходную точку, 2.
5. Создайте входы, заставляющие панель вращаться. Например, используйте .
::
My Output 	Target Entity	Target Input
OnPressed 	flip_panel 	Open
OnUnPressed	flip_panel 	Close
----
Видеоролик с демонстрацией
== Способ Б: Func_Brush как дочерний элемент вращающейся модели ==
1. Создайте энтити со следующими настройками:
::
Название свойства 	Значение
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) и присоедините его к модели. Преобразуйте его в энтити со следующими настройками:
::
Название свойства	Значение
Name 	trans_brush
Parent 	trans_panel
3. Создайте рядом с созданным брашем (но не слишком близко) и создайте следующие выходы:
::
	My Output 	Target Entity	Target Input 	Parameter 	Delay	Only Once
	OnMapSpawn	trans_brush 	SetParentAttachmentMaintainOffset	panel_attach	0.00 	No
	OnMapSpawn	trans_panel 	SetAnimation 	BindPose 	0.00 	No
4. Создайте энтити со следующими настройками:
::
Название свойства	Значение
Name 	trans_sound_end
Sound name 	World.SpeedFlingRotatingPanelStop
Volume 	2
5. Вернитесь к энтити и настройте выход следующим образом:
::
	My Output 	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnAnimationDone	trans_sound_end	PlaySound 	 	0.00 	No
6. Создайте энтити и настройте выход следующим образом:
::
	My Output 	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnPressed 	trans_panel 	SetAnimation	rotate_180 	0.00 	No
	OnUnPressed	trans_panel 	SetAnimation	rotate_180_reverse	0.00 	No
Панель будет вращаться вместе с брашем. Вторая строка будет возвращать панель в исходную позицию после задержки.
Вы также можете подключить вращающуюся панель ко входу любого типа. Настройте выходы так:
::
	My Output 	Target Entity	Target Input	Parameter 	Delay	Only Once
	<ваш выход>	trans_panel 	SetAnimation	rotate_180 	0.00 	No
	<ваш выход>	trans_panel 	SetAnimation	rotate_180_reverse	0.00 	No
----
Скачать префаб panels_rotate
Демонстрационный видеоролик
==Сравнение способов==
На первый взгляд настройка func_door_rotating по способу A может показаться сложной, но этот метод имеет преимущество в том, что он экономит две ambient_generic, одну prop_dynamic и множество входов для иерархии и поворота.
Однако, в отличие от способа Б, есть и недостаток: анимация поворота simple_panel имеет "живой" эффект качания панели после поворота, а func_door_rotating после поворота просто останавливается.
== См. также ==
*