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