Вращающиеся скайбоксы
Этот туториал является несколько необычным, в плане того, что Вам не понадобятся никакие знания о скайбоксах (skyboxes) вообще. Здесь будет просто перечислены последовательные действия, которые нужно будет воспроизвести (можно даже не вдаваясь в подробности и особенности происходящего). Поэтому, вместо стандартной ссылки на туториалы по созданию скайбоксов, Вашему вниманию предлагается постройка экспериментального уровня с нуля (для новичков может послужить примером избитого вопроса "С чего же начать?"). В то время как вышеперечисленные шаги подробно описаны, графические же и дизайнерские аспекты оставлены за бортом, т.к. не являются целью этого туториала. Все что Вам будет необходимо - это четко следовать нижеизложенному.
Естественно, Вам понадобится тот "Джентельменский набор" знаний, включающий в себя: вырезка (Subtracting) и добавление (Adding) брашей, установка света (Lights) и стартов игрока (PlayerStart) и т.д. Итогом туториала будет являться простенький пример с вращающимся скайбоксом. Начнем с постройки комнаты: вырежьте браш размером 256*512*512. На потолке приделайте Light, а также не забудьте установить PlayerStart.
Поменяйте размеры строительного браша на 200*400*576, убедитесь что он точно находится по центру комнаты в каждом окне (имеется в виду окна Top, Front и Side). Нажмите Пересечение (Intersect), а затем Вырезать (Subtract). Таким образом у Вас в комнате появились два окна на противоположных сторонах. Это очень экономно использовать один браш вместо двух =)
Теперь в окне Top, нажав правой кнопкой мыши на строительном браше, а также зажав Ctrl двигайте мышью вправо (можно влево) для того чтобы повернуть браш на 90 градусов. Так как он все еще имеет форму двух окон, то все что Вам нужно будет сделать - нажать Subtract. Теперь у Вас уже имеется 4 окна на каждой стороне и все это с помощью двух брашей - очень гуманно по отношению к CPU.
Теперь выберете все 4 поверхности Ваших окон (их размеры 200*400): зажмите Ctrl и левой кнопкой мыши щелкните на каждой из них. Отпустите Ctrl и нажмите правой кнопкой мыши на одной из выбранных окон. В появившемся меню (убедитесь что в заголовке присутствует надпись 4 selected - в противном случае Вы либо что-то упустили, либо захватили лишнего) щелкните на Surface Properties. Здесь в закладке Effects поставьте галочку напротив Fake Backdrop, затем закройте окно и отмените выделение текстур. Для чего это нужно? - Этим Вы указываете движку, что вместо текстур, которые Вы видите в едиторе, нужно будет показывать скайбокс. На этом этапе осталось "одеть" Вашу комнату текстурами (учитывая FakeBackdrop, вид текстуры окна не имеет значения, т.к. она все равно не будет отображаться).
Перейдем непосредственно к конструированию скайбокса: размеры активного браша сделайте 512*512*512. Средний размер скайбокса для небольшого уровня обычно 1024*1024*1024, но т.к. у Вас масштабы поменьше, то и скайбокс имеет соответствующие размеры. Не стоит думать, что скайбокс - обязательно куб. На самом деле он может быть любой формы. Здесь для простоты использовался кубический скайбокс. Сдвиньте браш за пределы Вашего миниуровня - так чтобы он никак не соприкасался с комнатой. Откройте Текстурный Браузер (Texture Browser) и загрузите пак ShaneSky.utx. Здесь Вы найдете в самом конце текстуру с именем Stars. Выберете ее и нажмите Вырезать (Subtract). Вообще не обязательно использовать именно эту текстуру - просто по некоторым соображениям, вращающиеся скайбоксы имеют космическую тематику. Все же этим не должно ограничиваться Ваше воображение. Теперь "залетите" внутрь только что вырезанного куба и держа Ctrl выберете все 6 текстур будущего скайбокса изнутри. Нажмите правой кнопкой мыши на одной из них, в появившемся меню щелкните на Surface Properties и как в прошлый раз перейдите к закладке Effects. Но теперь поставьте галочку напротив Unlit. Закройте окно и отмените выбор текстур.
Вы уже почти у финиша!!! Осталось только пара деталей =) Откройте Браузер Актеров (Actor Class Browser). Здесь перейдите к разделу Info (нажмите "+" рядом с заголовком) и в нем щелкните/выберете SkyZoneInfo (выделится синим цветом). Сверните Браузер Актеров и на одной из текстур внутри скайбокса нажмите правой кнопкой мыши. В открывшемся меню щелкните на Add SkyZoneInfo here. Теперь на этом месте появилась иконка в виде кубика со знаком вопроса. Затем передвиньте эту иконку в центр скайбокса. Сейчас самое время перестроить (Rebuild Level) и сохранить (Save) Ваш уровень.
Вы можете остановиться здесь, т.к. небо уже готово к употреблению. Осталось только заставить Ваше небо крутиться. Если у Вас возникли некоторые проблемы на предыдущих шагах, пишите (на английском) автору без колебаний. Он вышлет Вам рабочую версию этого творения плюс копию данного туториала (но на английском). Если Вы думаете, что для вращающегося скайбокса понадобится изменение его конструкции, то Вы ошибаетесь. Все дело только в настройке свойств.
Продолжим там, где Вы закончили. Нажмите правой кнопкой мыши на иконке SkyZoneInfo и в появившемся меню выберете SkyZoneInfo Properties. Зайдите в раздел Advanced и внутри найдите поле bStatic. Для него укажите значение false. Теперь перейдите к другому разделу: Movement. В нем поменяйте значения для bFixedRotationDir на true, для Physics укажите PHYS_Rotating, а затем, нажав "+" напротив RotationRate, измените значения в трех полях: Pitch, Yaw и Roll (например, Pitch сделайте равным 150, Yaw - 40, Roll - 550). Попробуйте для них указать разные комбинации значений, и Вы поймете, за кручение в какой плоскости отвечает каждый. В этих полях можно указывать и отрицательные значения, что вызовет вращение в противоположную сторону (против часовой стрелки и по часовой стрелке).
Если у Вас все же возникли некоторые вопросы по скайбоксам пишите (на английском) автору. Также, если Вы хотите получить копию этого уровня, автор перешлет ее Вам (укажите только адрес получателя).
Автор: NVerxion
Перевод сделан 32_Pistoleta