Создание огня в UnrealEDАвтор: Hruka
Вступление
Как вы уже могли заметить ходя по вашим уровням, свет в них
приходил из ниоткуда. Не было никаких видимых источников света - фонарей,
факелов и т.д. Сейчас мы исправим эту проблему. Ну а так как уровень у нас
скорее всего сделан в готическом стиле, то в качестве источника света мы будем
использовать огонь.
Самый простой способ создания огня
Как вы наверное уже знаете, огонь в Unreal состоит из
нескольких перекрещивающихся плоскостей. Такой огонь создать довольно просто,
однако проще всего испоьзовать уже готовый объект, который сделали товарищи из
EpicGames - класс Light.TorchFlame . Для начала сделайте стандартную комнату
256x512x512. Теперь сделаем подставку для нашего огня. Добавьте в центр комнаты
куб размерами 64x64x64 (если не знаете, то это делается кнопкой Add Brush
или просто Ctrl+A) Теперь в
центр вашей подставки добавьте класс Light.TorchFlame. Как вы видите, на вашей
подставке появился огонь. Однако он слишком большой для этой подставки, его надо
уменьшить. Для этого кликните два раза на этом огне, появится окно TorchFlame
properties. Раскройте строку Display. Найдите параметр DrawScale. Этот параметр
показывает во сколько раз надо изменить размер объекта, например значение 0.5
сделает объект в два раза меньше, а значение 2 - в два раза больше. Измените
значение этого параметра на 0.5. Теперь огонь как раз подходит под нашу
подставку. Его осталось только придвинуть к подставке, а то он стал висеть в
воздухе после того, как мы изменили его размер. Если вы переделаете ваш уровень
сейчас, то вы увидите что огонь испускает очень мало света. Для исправления этой
проблемы опять вызовите окно TorchFlame properties и раскройте строку
LightColor. Вы увидите три параметра отвечающих за цвет данного источника света.
Первый параметр, LightBrightness - это яркость цвета. Второй параметр, LightHue
- это оттенок цвета (0 - красный, 32 - желтый, 64 - зеленый, 128 - голубой, 160
- синий, 255 - опять красный). Ну и третий - это LightSaturation, насыщенность,
или вернее сказать, бледность цвета (255 - самый бледный, 0 - самый насыщенный).
Теперь поставьте яркость примерно в 128, оттенок примерно 16, и насыщенность
где-то 120-150. Теперь ваш огонь выглядит просто отлично:

Можете теперь
переделать уровень и запустить его.
Создание огня из плоскостей
Итак, вы научились добавлять огонь в ваши уровни, однако иногда
возникает необходимость создать огонь отличный от стандартного - например
другого цвета. В этом случае вы должны сделать огонь из нескольких плоскостей
при помощи инструмента "поверхность" (sheet). Сделайте вторую комнату
256x512x512 и соедините ее с первой. В центре комнаты соорудите подставку для
огня (куб размерами 32x128x128). Теперь давайте делать сам огонь. Сначала
загрузите текстуры огня (они находятся в файле GreatFire.utx). Теперь создайте
поверхность с ориентацией X-Wall (или Y-Wall). Поместите ее на нашу
подставку:

Выберите
подходящую текстуру (например, Ancflame2). Теперь нажмите кнопку Add Special
Brush. В меню Predefined выберите Transparent window. В поле Visibility выберите
2-Sided и нажмите кнопку Add Special. Если текстура не совсем подходит по
размеру, то ее можно увеличить/уменьшить в окне Surface properties, закладка
Scale. Если надо подвинуть текстуру, то в том же окне для этого служит закладка
Move. После манипуляций с текстурой утсановите в этом же окне в закладке Effects
флажок Unlit. Теперь в любом 2D окне нажмите правой кнопкой на вашу поверхность
(именно на поверхность, а не на строительный браш. Его лучше всего пока
отодвинуть подальше). Из появившегося меню выберите Duplicate. Рядом с вашей
поверхностью появится еще одна. Подвиньте ее и поверните так, чтобы они
образовывали крест:

Теперь осталось
только одно - добавить источник света, ведь поверхности сами не излучают свет.
Добавьте его и поместите над вашим огнем. Если вы хотите чтобы свет мерцал, то
кликнув два раза на источнике света, вызовите окно Light properties. В этом окне
раскройте строку Lighting. Найдите параметр LightEffect. Здесь можно установить
разные световые эффекты. Чтобы сделать наш источник света мерцающим выберите
LE_TorchWaver или LE_FireWaver. Если хотите, поменяйте цвет источника. Теперь вы
можете переделать карту и играть. Конечно, вы можете сделать огонь не из двух, а
из трех, четырех и даже шести поверхностей. Такой огонь будет выглядеть почти
настоящим, однако если в нем будет слишком много поверхностей то игра будет
заметно тормозить. Однако, в некоторых местах, когда огонь может быть виден
только с одной стороны, для него можно использовать всего лишь одну поверхность.
Все зависит от ситуации.
Создание дыма
Итак, вы научились делать огонь, однако какой же огонь без
дыма? Давайте к нашему огню добавим еще и дым. Для этого существует два способа.
Первый - классы Effects.SmokeHose и Effects.SmokeHoseDest. SmokeHose это точка
из которой будет идти дым, а SmokeHoseDest - это та точка, куда он будет идти.
Так что чтобы добавить дым надо всего лишь поместить класс SmokeHose прямо над
огнем, а SmokeHoseDest чуть выше:

Вот
теперь можете переделывать ваш уровень и играть. Этот способ довольно прост,
однако у него есть один очень существенный недостаток, который перевешивает все
его достоинства - объектов SmokeHoseDest не может быть больше двух. Конечно, вы
можете создать их хоть десять, однако дым из класса SmokeHose будет идти только
в одну точку, в которой находится класс SmokeHoseDest созданный раньше всех.
Поэтому я рекомендую вам пользоваться вторым способом, хоть он и немного
сложнее. Этот способ - класс Effects.SmokeGenerator. Этот класс похож на
SmokeHose, однако ему не нужен никакой другой класс для указания точки в которую
будет идти дым. Он будет всегда идти вверх. Основным отличием SmokeGenerator'a
от SmokeHose'a является то, что SmokeGenerator нужно сначала "включить". Для
этого используется триггер. Простой триггер - это такой объект, который при
некотором условии (по умолчанию - когда игрок входит в зону действия триггера)
посылает сообщение, а другой объект его принимает. Это сообщение указывается в
поле Events->Event настроек триггера. Чтобы какой-то объект "принял" это
сообщение нужно записать поле Events->Tag объекта это же сообщение. Так что
удалите объекты SmokeHose и SmokeHoseDest, и вместо SmokeHose создайте
SmokeGenerator. Теперь найдите место, где у вас находится PlayerStart. Поднимите
сам объект PlayerStart повыше, а прямо под ним добавьте класс Triggers.Trigger
(не раскрывайте его). Это надо чтобы триггер посылал сообщение сразу после
начала игры. Теперь дважды щелкнув на ваш триггер вызовите окно его параметров и
впишите любое уникальное название события (например SmokeTrigger) в поле
Events->Event. Также измените значение параметра Trigger->bTriggerOnceOnly
на True чтобы наш триггер мог быть активирован только один раз в самом начале
игры. В противном случае при возврате на место старта наш триггер активировался
бы заново и отключил бы наш SmokeGenerator. Теперь откройте окно настройки
SmokeGenerator'a и впишите это же сообщение в поле Events->Tag. В 2D окнах
эти два объекта должы соединиться темно-красной линией. Вот собственно и все.
Можете переделывать уровень и играть... Удачи вам и счастливого уровнестроения!
;))