Вы находитесь на странице: 1из 145

Овладейте техникой Unreal Engine 4 –

Blueprints (cистема визуального


скриптинга)
В книге разобраны проекты, которые помогут вам стать мастером в это деле.

Об авторе
Райан Ша – руководитель проектов и ведущий разработчик в студии Китатос. Райан может похвастаться более, чем десятилетним опытом в
области создания компьютерных игр, а также разработкой множества программ по их созданию.
До работы в студии Китатус Райан был писателем-фрилансером, он публиковал фантастические рассказы. Опираясь на свой
писательский опыт, Райан перешел к компьютерным играм, его всепоглощающей страсти к воплощению придуманных миров в
реальность.
Вы найдете Райана по адресу http://kitatusstudios.co.uk и также ему можно писать на почту contact@kitatusstudios.co.uk

Благодарности
Огромное спасибо и еще половина его уходит моей девушке Скарлетт, которая верила в меня, когда больше никто не верил. Ее терпение
вдохновляет.

Я хотел бы поблагодарить Эпика за создание многомерной, но легкой в использовании системы с Unreal Engine 4. Когда люди называют это
революционным продуктом, они не врут!

Также я хотел бы поблагодарить своих родителей. Если бы не они, вы бы сейчас не читали эту книгу. Еще я хочу упомянуть своих братьев,
Каллума и Джордана. Возможно, эта книга вдохновит их на то, чтоб последовать по моему пути, ведь создавать игры – это так весело!
Я также хотел бы поблагодарить тебя, читатель. Я не знаю тебя лично, но ты купил эту книгу, тем самым помогая и поддерживая меня и
игровую индустрию. Кто знает, может быть эта книга поможет тебе и станет трамплином для создания лучшей игры всех времен. Все
возможно.

Содержание
• Глава #1 – Творческий подход к порталам - (от третьего лица)

• Цель вкратце - 7
• Начнем! - 7
• Создаем новый проект - 9
• Для не анимированной текстуры - 15
• Для анимированной текстуры портала - 18

• Приложение GlueIt - 23
• Создание анимированного материала - 25

• Если у вас один спрайт-лист - 25


• Если у вас больше одного спрайт-листа - 31

• Если у вас еще один спрайт-лист - 37


• Если у вас больше, чем еще один спрайт-лист - 40

• Создаем портал! - 44
• Собираем blueprint портала- 48
• Ищем дом для портала - 53
• Настало время сделать портал порталом - 58

• Есть способ получше - 63

• Создаем экран загрузки - 65


• Настроим HUD по высшему классу! - 71
• Проект #1 - Упакован! - 85

• Глава #2 – Первая кровь II - (blueprints игры с горизонтальным перемещением)

• Цель вкратце - 85
• И снова… начнем! - 86
• Мы в деле! - 87
• Подготовка к настройке HUD! - 91
• HUD... HUD... и назад! - 89

• Готовим материал для окна HUD - 91


• Что теперь? - 93
• Мульти-HUD! - 95
• Создаем окно HUD - 96
• Красное окно для красного игрока. Голубое окно для голубого игрока. - 112
• Игрок сталкивается с HUD…! - 120

• Возьмем под контроль HUD и игрока! - 131


• Наделяем персонажа разными «силами»! - 137
• Как убить игрока / монеты, монеты, монеты! - 139
• Проектt #2 - Wrap-Up! -145

• Конец книги #1 - 145

Предисловие
Unreal Engine 4 - последняя версия Unreal Engine, популярного пакета для разработки видеоигр. Для Unreal Engine не нужно вступительных
слов; этот пакет поддерживает целые поколения игровых приставок с самого их появления. Я назову Unreal Engine революционным продуктом
и это не будет преувеличением, потому что это приложение – все, что нужно разработчику (инди-разработчику или коммерческому)
компьютерных игр, чтобы создать идеальный проект.
В последней версии Unreal Engine 4 Эпик (разработчики UE4) улучшил пакет и прокачал движок до следующего поколения. Команда
буквально превратила будущее в настоящее, и вам лучше начать использовать Unreal Engine 4 в любом проекте, большом или маленьком,
коммерческом или независимом, прямо сейчас. Книга «Овладейте техникой Unreal Engine 4 – Система визуального скриптинга» ясно, сжато,
информативно, но увлекательно рассказывает о работе с Unreal Engine 4, при этом вы не напишете ни строчки кода. С помощью этой книги
вы создадите множество небольших сценарных проектов. Вы получите навыки, необходимые для создания игры вашей мечты. По мере
овладения искусством работы в Unreal Engine 4 по сценарной системе вы также узнаете секрет, как выжать максимум из этого движка.

О чем эта книга


Вот о чем вы узнаете из этой книги, не написав при этом ни строчки кода!

• Как создавать анимированную текстуру с помощью метода Flipbook;


• Как создавать портал, чтобы переходить с одного уровня на другой;
• Как создавать экран загрузки;
• Как создавать окно HUD;
• В чем различия между переменными Bool, Int, Float, String и Array?
• Как убить игрока;
• Как переключаться между игроками;
• Как изменять материал;
• Как подсчитывать очки в игре

… и многое многое другое!

Что вам понадобится


Чтобы получить от этой книги как можно больше, вам понадобится Windows, Mac или Linux, которые поддерживают Unreal Engine 4. Вот
минимальные требования к конфигурации системы:

• Desktop PC или Mac


• Windows 7 64-bit или Mac OS X 10.9.2 или поздние версии
• Четырехъядерный процессор Intel или AMD, 2.5 GHz или быстрее
• NVIDIA GeForce 470 GTX или AMD Radeon 6870 HD series card или выше
• 8 GB оперативной памяти
Примечание: Верьте мне или нет, вам также понадобится Unreal Engine 4 (версия 4.2 или новее).

Для кого эта книга


Книга «Овладейте техникой Unreal Engine 4 – Blueprints» предназначена для любого, кто мечтает создать компьютерную игру, но не знает,
как. Также она будет интересна для тех, кто уже работает с Unreal Engine 4, но хочет прокачать свои навыки и перейти на следующий уровень,
и для тех, кто мечтает создавать игры, при этом не хочет заморачиваться с кодом. Тем из вас, кто уже работал с Unreal Engine 4, будет проще,
тем не менее все объяснения в книге сжаты и понятны, есть скриншоты, иллюстрирующие процесс – все для того, чтобы обучение системе
визуального скриптинга было легким и приятным.
Если у вас не было опыта работы с Unreal Engine 4 или другим игровым движком, вы с легкостью сможете следовать советам книги. Но если
вам понадобится помощь или вы чего-то не понимаете, не стесняйтесь спрашивать на форуме Unreal Engine (http://forums.unrealengine.com)
или пишите мне на почту (contact@kitatusstudios.co.uk.)

Обратная связь от читателей


Я люблю получать обратную связь. Плохая она или хорошая, это всегда приветствуется, и я настоятельно рекомендую вам оставлять
комментарии. Серьезно, я хочу знать, понравилась вам эта книга или вы ее возненавидели. Обратная связь помогает мне понять, как я
справился с задачей, что нужно исправить, и в целом хорош или плох результат. Я перфекционист и стремлюсь к лучшему, поэтому, если я
могу что-то улучшить, пишите мне (contact@kitatusstudios.co.uk)

Техническая поддержка
Поскольку вы купили эту книгу, вы получаете бонусный контент, к примеру палитры цветов и содержание проекта. Для доступа к файлам
перейдите по ссылке: http://content.Kitatusstudios.co.uk
Пиратство
Я не буду притворяться, что его не существует. Пиратство есть пиратство и ничто не сможет его остановить. Если вы незаконно скачали эту
книгу, все в порядке. Я не буду проклинать вас или что-нибудь в этом роде. Конечно грустно, что вы жалеете денег, но я понимаю, что сейчас
сложные времена, а в цифровом мире для некоторых людей все бесплатно.
Поэтому я попрошу о небольшой услуге. Я потратил время, чтобы написать книгу, которая поможет вам и другим людям научиться и улучшить
свои навыки в blueprints. Я потратил свои рабочие часы, то время, которое я мог бы посвятить Super Distro (мой первый коммерческий проект,
который должен скоро выйти). Если вы скачали эту книгу, и она вам понравилась, вы можете купить Super Distro или пожертвовать какую-
нибудь сумму денег на моем сайте.
Если вы купили эту книгу, то моей благодарности за поддержку моей работы не будет достаточно, и я рад, что вы наслаждаетесь книгой на
законных основаниях.

Опечатки
Когда я писал эту книгу, в ней не было ошибок. Тем не менее, движок обновляется и все меняется. Если в некоторых моментах код больше
не работает, незамедлительно пишите мне на почту: contact@kitatusstudios.co.uk Если вы сделаете это, вы не только обеспечите полную
информативности книги, но и поможете другим читателям избежать ошибок и поспособствовать тому, что их знакомство с книгой будет
протекать безболезненно. Кто знает, может в следующих книгах вы попадете в лист благодарностей или авторов

Контент, который можно загрузить


Вы сможете загрузить различные цветовые варианты иллюстраций в книге и другие проектные файлы UE4 по ссылке:
http://content.kitatusstudios.co.uk.

Вопросы
Если у вас есть вопросы, пишите мне на contact@kitatusstudios.co.uk. Я отвечаю на почту, так что чувствуйте себя свободно, если хотите
задать вопрос
.

Цель #1 –Творческий подход к порталам


Вступление к UE4 и Blueprints.
Шаблон:
Визуальная система скриптинга от третьего лица (Blueprint Third person)
Что вы узнаете:
- Как сделать переход между двумя уровнями
- Как создать экран загрузки
- Об анимированной текстуре
(Анимация по типу «флип бук»)
- Как создать центральный мир
(Мир, который объединяет все уровни)
Что вам понадобится:
- Текстура для портала
- Если создаете анимированный вариант: вам понадобится анимация
и программа GlueIt, которая доступна здесь:http://www.varcade.com/blog/glueit-sprite-sheet-maker-download/
- Экран загрузки (.PNG or .TGA)
- Разрешение: 1920 x 1080
(Дополнения) Что вам понадобится для дополнений:
- Анимированное видео для портала (.Mov) / файл .GIF

Начнем!
Для начала запустим Unreal Engine 4 и создадим новый проект
Откройте Unreal Engine 4, и вы увидите следующий экран:
Экран будет появляться на несколько мгновений каждый раз, когда вы запустите Unreal Engine. Я настоятельно рекомендую проверять раздел
Marketplace; особенно «Примеры содержания» (Content Examples). Этот подраздел Marketplace – золотая жила информации о том, как Epic
(разработчики Unreal Engine) используют движок, чтобы компилировать и формировать содержание.

Все, что вы найдете в разделе Marketplace можно использовать еще раз сколько угодно (в рамках проектов на Unreal Engine 4). В качестве
бонуса вы получите текстуры, материалы и модели для обучения.

Для большей части содержимого на Marketplace есть страница с документацией, которая находится на
(https://docs.unrealengine.com/latest/INT/) – Поэтому вы сможете разбивать содержание на части и изучать каждую деталь, на которой я не
смогу остановиться подробнее. Это неоценимый источник знаний для разработчиков, только начинающих работать с Unreal Engine 4.
Создаем новый проект
На пусковом экране нажимаем кнопку «Launch», чтобы отправиться в наше невероятное приключение с Unreal Engine 4
Загрузка займет пару мгновений, а в это время вы увидите следующий экран:

Заметьте, что ваш экран может выглядеть немного по-другому, это зависит от того, какой проект вы создали/установили.
В верхней части экрана есть вкладка Новый проект New Project (Новый проект). На этом примере мы увидим, как создать портал от третьего
лица, нужно отметить вариант Blueprint Third Person (Визуальная система скриптинга от третьего лица), А НЕ Сode Third Person (код от
третьего лица) (Вам придется прокрутить экран вниз, чтобы найти вариант «Blueprint Third Person»!). Убедитесь, что у вашего проекта
есть название (оно должно быть внизу экрана), а напротив “Include Starter Content”(добавить начальное содержимое) стоит
галочка.
Когда будете готовы, нажимайте “Create Project” (Создать проект), и Unreal Engine 4 начнет установку (в первый раз это может занять больше
времени, чем обычно, поскольку устанавливаются проектные файлы)
Когда проект загрузится, вы увидите следующий экран:
Это значит установка завершилась корректно, и мы начинаем работу над проектом “Project: Let’s Make a Friggin’ Portal!”

Если вы хотите освоиться в проекте, на шкале прокрутки выше игровой области есть несколько вариантов. Если вы нажмете Play, то попадете
в игру. Вы сможете побродить по игровому пространству и «почувствовать» этот движок. Так что если вы еще этого не сделали, я
настоятельно рекомендую.

Итак, вы пошатались по окрестностям, теперь настало время приступить к работе над системой нашего портала.
Для начала нам понадобится новая карта переходов, поэтому давайте создадим ее, это можно сделать через вкладку File > New Level…(
Файл > Новый уровень)

У нас есть выбор: по умолчанию (default) или пустой уровень (empty level). В данном случае лучше выбрать опцию «по умолчанию».

Когда уровень загрузится, нам необходимо его сохранить, не потеряв данные. Заходим на вкладку File > Save As…(Файл > Сохранить как)

При этом должна открыться папка Content/Maps (Содержание/Карты), если этого не произошло, вам потом непросто будет найти этот файл.
Когда вы находитесь в папке, напишите название вашей карты и нажмите «Save».

Запомните, как вы назвали этот уровень, потому что это будет ОЧЕНЬ ВАЖНО позднее. Я назвал свой ArtOf_Example2, но вы можете
называть свой как захотите.
ПРАВИЛА UNREAL ENGINE 4 – НАЗВАНИЯ ФАЙЛОВ – Называя файл, придерживайтесь следующего алгоритма: приставка
(обозначение объекта), затем подчеркивание и имя файла. Например: blueprint героя будет называться Герой_*Имягероя*, а карта
будет называться НАЗВАНИЕПРОЕКТА_НАЗВАНИЕКАРТЫ (Пример: ArtOfBp_Example2). Это поможет вам избежать мусора в
названиях и быстро находить необходимые файлы в Unreal Engine 4.

Теперь, когда мы создали карту, можем вернуться к примеру карты. Открываем File > Open Level > Example_Map (Файл > Открыть уровень >
Пример карты).

Мы вернулись к карте, теперь можно заняться порталом. Во вкладке «Content browser» (содержимое браузера) нажимаем подсвеченную
кнопку «New» и кликаем на «Blueprint»

После этого откроется диалоговое окно, в котором нас спросят, какой именно blueprint мы хотим создать. Для портала нам нужен Actor
blueprint (визуальный скриптинг игрока), поэтому мы выбираем вариант «Actor»:
Теперь можно назвать наш blueprint, я буду использовать имя “BP_Portal”. И снова повторюсь, вы можете называть свой blueprint так, как
хотите. Если вы случайно нажали не туда и хотите переименовать blueprint, нажмите на нем правой кнопкой мыши (на макинтоше - Ctrl+клик)
и выберите «переименовать» (rename). (Подсказка: вы также можете кликнуть левой кнопкой мыши на blueprint и нажать F2).

Когда вы изменили имя blueprint, нажимайте «New» во вкладке Content Browser, затем нажмите «Folder» (папка), чтобы создать новую папку.
Назовите ее “TutorialContent”.(содержание урока)

Когда вы создали папку, кликайте на blueprint и перетаскивайте его в папку. Появится маленькое окно, которое спросит вас, хотите ли вы
копировать blueprint (“Copy Here”) или переместить его (“Move Here”). В нашем случае необходимо переместить сценарий в папку, поэтому
мы кликаем на “Move Here”, и сценарий оказывается в папке.

Теперь два раза кликаем на папку и видим вкладку Content Browser, которая выглядит как:
Теперь можно импортировать текстуру для вашего портала. И здесь мы разделимся на две группы: тех, кто использует анимированную
текстуру, и тех, кто использует неанимированную. Но даже если вы используете неанимированную текстуру портала, пожалуйста, не
пропускайте главу об анимированной текстуре портала, в ней вы узнаете ключевые положения, которые лежат в основе анимации, в том
числе и по типу «флип бук», в Unreal Engine 4:

Для не анимированной текстуры:


Если текстура, которую вы хотите импортировать в портал статична (не движется), вам нужно просто импортировать ее и сделать из нее
материал. Для этого вам нужно зайти в раздел «Import» (Импотировать), который находится рядом с разделом «New» во вкладке Content
Browser.

Затем вы находите текстуру для портала и импортируете ее. Нужно импортировать ее в папку TutorialContent (содержание урока). Если
появится диалоговое окно с указанием на ошибку, в котором будет сказано, что текстура не является “Power of Two” (в степени «2»), все в
порядке, нажмите «продолжить» (continue). Если текстура окажется в другой папке, просто перетащите ее в папку TutorialContent.

Когда текстура окажется в папке, кликните на ней правой кнопкой мыши и выберите вариант “Create Material…”(Создать материал)
Итак, мы создали материал; но впереди еще много работы!

Дважды кликните на материале, чтобы загрузить редактор; там мы будем редактировать и корректировать параметры материала.

Когда вы в первый раз загрузите Редактор материала, ячейка с базовыми цветами может находиться внутри основной таблицы с ячейками.
Это не беда, кликните на материалы и перетащите их в сторону, и вы увидите следующую картину:

На этом этапе больше ничего не потребуется, мы вернемся к нему позднее. Для начала нам нужно в Редакторе Материалов соединить ячейку
с образцами текстуры (Texture Samples) и излучаемыми цветами (emissive color).
Что такое излучаемые цвета? – Если вкратце, то излучаемые цвета - это параметр, который определяет, насколько цвет проникает ЧЕРЕЗ
материал.

Применив к текстуре параметры «базовые цвета» и «излучаемые цвета», вы получите свечение материала, как от компьютерного или
телевизионного экрана или похожего источника света. Если вы хотите узнать больше о параметрах материала и о том, что они значат, вы
можете найти эту информацию на сайте Unreal Engine в разделе Официальная документация (Official Documentation), через Unreal Engine
туда можно попасть, нажав F1.

Теперь кликните левой клавишей мыши на белый кружок со стрелкой на ячейке Texture Samples (образцы текстуры) и перетащите линию к к
пустому белому кругу рядом с пунктом Emissive color (излучаемые цвета) так, чтобы она прикрепилась к нему. Сейчас образцы текстуры
связаны с базовыми цветами (Base color) и излучаемыми цветами, как на скриншоте:

ВАЖНАЯ ПОДСКАЗКА: Когда вы работает в Unreal Engine и изменяете что-либо в blueprint или в редакторе материала, не забывайте
сохранять изменения, чтобы не потерять их, если ваш редактор зависнет. (автоматически будет действовать параметр
«применить» (Apply), чтобы вы не нажимали постоянно и ту, и другую кнопку)
Чтобы сохранить, нажмите большую, яркую кнопку «Save» в верхней части редактора:

Когда вы все сохранили, можно закрыть редактор материала. Убедитесь, что вы также нажали кнопку «Save all»(Сохранить все) в главном
окне Unreal Engine; в этом случае вы точно не потеряете данных.

Для анимированной текстуры портала:


Здесь все немного замысловатее. Я постараюсь объяснить по-простому, но если вы запутаетесь, то проследите свои шаги сначала и все
должно быть в порядке. Готовы?

Если вы хотите, чтобы текстура портала была анимированной, вам необходима анимация по типу Флипбук (Flipbook) – это ответ Unreal Engine
на анимацию 2D. Чтобы сделать Флипбук и для его нормальной работы, нам нужен Спрайт-лист (Спрайт-лист (Sprite Sheet) — это одно
большое изображение мелких графических элементов, например, иконок, картинок или кнопок. Главным преимуществом использования
спрайтов является однократная загрузка сервером сразу всех элементов в одном файле, а также уменьшение веса графики).
Для всего этого нам понадобится помощь программы Gluelt – бесплатного приложения от «Vacade» (перейдите по ссылке в Project Outline в
начале этой главы). GlueIt превратит наши видео / файлы GIF в Spritesheets, но потребуется наше вмешательство. В первую очередь мы
должны сделать из видео/ файла GIF последовательность изображений для того, чтобы потом они могли магической трансформироваться в
приложении GlueIt.

Есть немного способов превратить видео/GIF в последовательность изображений, точнее всего два способа, для которых нужно разное
программное обеспечение: QuickTime Pro (Платное приложение – поддержка Видео и GIF) и VLC Media Player (Бесплатное приложение –
видео поддерживается, GIF не поддерживается).

ПОДСКАЗКА: Также есть другие способы превратить видео или файл gif в последовательность изображений, но для каждого движка
нужен свой подход, поэтому все зависит от ваших предпочтений.

Программа QuickTime Pro:

Шаг #1 – Откройте видео / файл GIF

Шаг #2 – Откройте вкладку File > Export (Файл >Экспорт)


Шаг #3 – Создайте новую папку (ЗАМЕТКА: Запомните, где она находится) – Назовите ее PortalAnim (Анимация портала). Название не так
важно.

Шаг #4 – Откройте папку, в которую хотите экспортировать. Во вкладке Export устанавливаем значение «Image sequence» (В
последовательность картинок), используя “BMP, 25 fps”.

Шаг #5 - экспортируем!

Программа VLC Media Player:

Шаг #1 – Создаем новую папку на вашем PC /Mac /Linux (ЗАМЕТКА: Запомните, где она находится) - Назовите ее PortalAnim (Анимация
портала). Название не так важно. Копируем местоположение папки (Ctrl + X / Ctrl + C) <- ОЧЕНЬ ВАЖНЫЙ ШАГ

Шаг #2 – НЕ ОТКРЫВАЙТЕ ваш файл ПОКА ЧТО (в приложении VLC)


Шаг #3 – Заходим в вкладку Tools > Preferences (Инструменты > Параметры)

Шаг #4 – Внизу окошка Simple Preferences (базовые установки) есть параметр Show Settings (показать настройки), и мы можем выбрать
базовые (simple) или все (all). Нужно выбрать все (all).

Шаг #5 – Теперь вам показан список всех настроек. Прокрутите список вниз к пункту Video (Видео) и выберите Filters (фильтры). Справа
выберите пункт «Scene Video Filter» (видео фильтры сцены). Когда вы отметите этот пункт, разверните список фильтров слева и нажмите на
пункт «scene filters» (фильтры сцены)
Шаг #6 – В правой части окна есть опция «Directory Path Prefix» (префикс пути к каталогу). Вставьте в окно адрес папки, которую вы создали
из Шага 1.

Шаг #7 – Прямо под пунктом Directory Path Prefix (префикс пути к каталогу) есть пункт «Recording ratio» (коэффициент записи). Это количество
кадров, которое вы хотели бы экспортировать, например, у меня сейчас там стоит значение «3 кадра» и если бы я поставил значение 50,
записывался бы каждый 50 кадр. Мне кажется оптимальным значение «24». Настраивайте эту опцию в зависимости от своих предпочтений.

Шаг #8 – Когда справитесь, нажмите «Save» внизу окна.


Шаг #9 – Переходим в вкладку File > Open File (Файл > Открыть Файл) и открываем видео.

Шаг #10 – Пусть видео проиграется до конца. Это займет всего несколько секунд.

Шаг #11 – После того, как видео закончится, возвращаемся назад в настройки в раздел Video > Filters (Видео > Фильтры) и снимаем
выделение с пункта «Scene Video Filter» (видео фильтры сцены) (Это нужно, чтобы VLC перестал записывать кадры с каждого видео, которое
вы открываете)

Теперь перейдем к следующему этапу…

Приложение GlueIt
Итак, вы загрузили Gluelt, теперь откроем это приложение и начнем объединять нашу последовательность изображений.

Когда Gluelt открыт, можно импортировать изображения. Внизу окна есть три кнопки под пунктом Step #1: добавить (add), удалить (delete) и
очистить (clear). Теперь нам нужно добавить изображения, поэтому вперед, но прежде чем вы сделаете это, я должен предупредить, что
впереди запутанная дорога, поэтому о препятствиях лучше скажу здесь.

Количество кадров, которое у вас есть – это важный параметр, который нужно принять во внимание: Unreal Engine поддерживает
текстуры до 8,192 x 8,192. Обычно, это не вызывает проблем, так как текстура портала не должна быть больше, чем примерно 512 x 512
каждый кадр. Но если ваш видео разрешением 1920 x 1080 включает 40-50 кадров, оно будет слишком много весить для Unreal Engine,
поэтому вам придется разбить файл в Gluelt на несколько файлов, чтобы Unreal Engine смог их обработать.

Возможно вам придется немного покромсать свой файл, но иногда действительно лучше импортировать в Gluelt кадры 1-10, сохранить, затем
импортировать кадры 11-20 и так далее. Помните, что неважно, сколько у вас получится в итоге колонок, все это мы делаем для удобства
работы в Gluelt, в конце концов, вам же легче будет работать в Material blueprint, и он будет меньше замусорен.

Теперь мы преодолели это препятствие и можно добавлять изображения. В этом проекте я буду настраивать анимированный портал, для
него понадобится всего один спрайт-лист. Тем не менее, далее в руководстве я буду ориентироваться еще и на то, что у вас может быть
много спрайт-листов.

Шаг #1 – В шаге #1 (Step 1), который находится в окошке GlueIt, добавим изображения.
Шаг #2 – Когда вы добавили изображения, переходим в шагу 2 (step 2) в окошке Gluelt. Теперь нужно определить, сколько колонок нам
нужно. Чтобы избежать появления белых или черных ячеек в конце анимации, нужно убедиться, что у нас идеальное количество кадров для
спрайт-листа.

Например, если у меня 20 кадров и 2 колонки, в каждой колонке будет 10 кадров. НО, если у нас три колонки, то все кадры разделятся
соответственно на три, и в конце спрайт-листа появится свободное место. Все это усложнит нам жизнь позднее.

Как я уже говорил, для 20 кадров идеально подойдут 2 колонки. ЗАПОМНИТЕ сколько колонок вы использовали и сколько рядов, это
пригодится нам позже!

Когда вы определились с количеством колонок, нажмите GlueIT и через несколько мгновений программа склеит ваши изображения!

Шаг #3 – После склейки нажмите «Save» (Сохранить) (Запомните, куда вы сохранили файл!)
Теперь у нас есть спрайт-лист, и можно открывать Unreal Engine, чтобы анимировать портал!

Создание анимированного материала


Теперь у нас есть спрайт-лист, который можно импортировать в Unreal Engine. Импортируйте его таким же образом, как другую текстуру (Как
мы уже делали раньше) Чтобы освежить память, повторим, как это просто:

Шаг #1 – Во вкладке Content Browser (окно, где находятся все ваши файлы), в самом верху, есть кнопка “New”, а рядом с ней “Import”. Нажмите
на нее.

Шаг #2 – Найдите спрайт-лист, который вы сделали в GlueIt и импортируйте его; Если появится диалоговое окно с ошибкой, которое говорит,
что это текстура не вида “Power of Two” (в степени «2»), все в порядке, нажмите на «continue» (продолжить).

Шаг #3 – Кликните правой кнопкой мыши на текстуре с создайте материал (“Create Material”)

Теперь текстура в движке, и мы превратили ее в Материал. Теперь все станет немного сложнее, если у вас не один спрайт-лист. Тем не
менее я постараюсь объяснить все как можно более доступно.

Если у вас один спрайт-лист:


Шаг #1 - Откройте редактор материала, дважды кликнув на материале.

Шаг #2 – Внутри редактора кликните левой кнопкой мыши на ячейке “Texture Sample” (образцы текстуры), которая соединена с базовыми
цветами, и нажмите «delete» на клавиатуре или кликните правой кнопкой мыши (Ctrl + Click) и нажмите «delete». Редактор материала должен
выглядеть следующим образом:
Шаг #3 – Кликните на пустой кружок со стрелкой рядом с “Base Colour” и протащите курсор влево на пустое пространство. Когда появится
диалоговое окно, введите там “Flipbook”. Когда вы кликните на этот вариант в предложенных опциях, ячейка FlipBook появится в вашем
blueprint. Она будет уже соединена с пунктом «базовые цвета».

Шаг #4 - Перетащите курсор от закрашенного белого кружка со стрелкой на ячейке Flipbook к пункту “Emissive Colour” (излучаемые цвета).
Таким образом, мы свяжем параметр «излучаемые цвета» с Флип бук, не теряя связь с параметром «базовые цвета». Теперь Материал
должен выглядеть так:
Шаг #4 - Находясь слева от ячейки Flipbook, нажмите клавишу «1» на клавиатуре (Ту клавишу, которая находится под F1, F2, F3 .и т.д.), и мы
создадим константу (Constant) Также вы можете напечатать “Constant” в поле поиска, которое находится над библиотекой справа, и
программа найдет ее сама.

Шаг #5 – Кликните на только что созданную слева константу (Constant), и вы увидите параметры. В окне с параметрами вы увидите поле
“Value” (значение), там будет введено значение 0.0. В нашем примере мы введем туда количество строк в Флипбуке. У меня это число «5»
(Так как у меня 10 изображений в двух колонках)
Шаг #6 – Соедините незакрашенный белый кружок на ячейке константы “Constant” и такой же круг рядом с пунктом “Number of Rows”
(количество строк) на ячейке Flipbook.

Шаг #7 – Снова нажмите «1» на клавиатуре (Или введите в поиске библиотеки: “Constant”) для создания другой константы. Теперь это число
колонок. Для моей текстуры это число «2» (Так как у меня 20 изображений, разбитых в 2 колонки по 5 рядов). Измените значение в ячейке
константы на число колонок в вашей текстуре. Когда введете значение, соедините незакрашенный белый кружок на ячейке константы
“Constant” и такой же круг рядом с пунктом “Number of Columns” (количество колонок) на ячейке Flipbook.

ПОЛЕЗНЫЙ СОВЕТ: В верхней правой части ячеек констант есть маленькая серая стрелка. Если вы будете нажимать на нее,
цветовая ячейка будет исчезать или появляться. Чтобы ваши Blueprints выглядели аккуратно и чисто, вы можете скрыть ячейку,
чтобы видно было только число значения.

Шаг #8 – Экран должен выглядеть теперь так:


Теперь кликните дважды правой кнопкой мыши (или Ctrl + клик) в области под константами и ячейкой FlipBook – появится сжатая версия
Blueprint Library (библиотека blueprints). В поле поиска библиотеки введите Texture Object, появится несколько вариантов. Но нам нужен
вариант “Texture Object”(объект текстуры), поэтому кликаем на него, тем самым создаем ячейку с образцами текстуры (Texture Sample).

Кликаем на только что созданный “Texture Object” и слева, в окна с параметрами (Properties box), вы найдете пункт Texture (Текстура). Справа
от этого пункта находится темно-серое окошко с надписью «None» (отсутствует). Кликните на это окно и в появившемся поле поиска введите
название своего спрайт-листа. Мой спрайт-лист называется “TEX_PortalAnim” поэтому я печатаю его и выделяю. Таким образом ячейка
“Texture Object” становится главной в нашей текстуре:
Шаг #8 – Присоедините белый кружок Texture Object к пункту “Texture(T2d)” на ячейке FlipBook.

Шаг #9 – Кликните на кружок рядом с пунктом “UVs” на ячейке FlipBook и перетащите курсор влево. Так вы снова загрузите сжатую библиотеку
(“Compact Blueprint” library). В поле поиска библиотеки введите “TextureCoordinate”(Координаты текстуры) и нажмите Enter на клавиатуре.

Вот мы и создали TextureCoordinate, в документации Unreal Engine она описывается так: “TextureCoordinate – отображает координаты
текстуры UV в виде двухканального векторного параметра, так что материал может использовать разные каналы UV и оперировать
с UV-координатами мэша ”

Шаг #10 – Не забудьте сохранить изменения, нажав на значок дискеты, который находится вверху редактора материала. После этого можно
выйти из редактора.
Если у вас больше одного спрайт-листа:
Начинающим не стоит браться за этот вариант. Это сложно и запутанно.

Посмотрите, что вы получите в результате:

Шаг #1 - Откройте редактор материала, дважды кликнув на материале.

Шаг #2 - Внутри редактора кликните левой клавишей мыши на ячейке “Texture Sample” (образцы текстуры), которая соединена с базовыми
цветами и нажмите «delete» на клавиатуре или кликните правой клавишей мыши (Ctrl + Click) и нажмите «delete».
Шаг #3 – Кликните на белый кружок рядом с пунктом “Base Colour” и перетащите курсор влево. Когда возникнет диалоговое окно, введите
там «if». Кликните на появившийся вариант «if», и вы создадите одноименную ячейку в Blueprint. Ячейка «if» будет связана с базовыми
цветами.

Шаг #4 – Чтобы blueprint компилировал, кружки рядом с пунктами “A”, “A>=B” и “A<B” в ячейке «If» должны быть закрашены белым.
Поэтому, чтобы blueprint работал, мы будем использовать временную систему. Каждый спрайт-лист будет активироваться в определенное
заданное время.

Тянем курсор влево от белого кружка рядом с пунктом «А» на ячейке «If», и сжатая библиотека Blueprint загрузится опять. Выбираем
вариант “Multiply” (умножать)

Ячейка «Multiply» нам нужна для умножения времени (после его разбития) на целое число и для десятичного варианта его отображения.
(В нашем случае я так много времени уделяю цифрам, так как это в дальнейшем позволит нам менять скорость Флипбук)

Теперь материал должен выглядеть так:


Шаг #5 – Перетащите курсор от кружка рядом с пунктом «A» на ячейке “Multiply” влево и в поле поиска наберите «Frac» (дробная часть). Так
мы отобразим параметр времени в десятичном виде и умножим его на целое число, чтобы определить скорость Флипбука.

Шаг #6 – Перетащите курсор влево от пустой кружка на левой стороне ячейки «Frac». В сжатой библиотеке Blueprint напечатайте “Divide”
(разделить) и нажмите «Enter». Таким образом появится ячейка «Divide», которая нужна для того, чтобы разбить время с учетом того
параметра скорости, который мы установили в анимации Флипбук.

Шаг #7 – Перетащите курсор влево от пустой кружка рядом с пунктом «А», который находится в ячейке «Divide». В поисковом поле введите
«Time» и выберите константу «Time», которая должна появится среди списка вариантов. Это ключевая компонента, на которой основывается
вся работа материала.

Шаг #8 – Чтобы создать константу нажмите «1» на клавиатуре, когда находитесь ниже ячейки “Time” (Также можно ввести «Constant» в
поисковом поле библиотеки Blueprint). В параметрах (properties) - они в нижней левой части экрана - установите значение константы: «5»
(value = «5»).
Это скорость анимации в Материале, возможно нам понадобится изменить ее позднее.

Шаг #8 - Соедините пустой кружок рядом с пунктом «В» на ячейке «Divide» и кружок на ячейке константы с значением «5»

Blueprint должен выглядеть вот так:

Шаг #9 – Кликните на закрашенный белый кружок на ячейке Constant (Которая уже соединена с “Divide”) и перетащите курсор к кружку «В»
на ячейке Multiply, которая пока еще должна быть пустой. Таким образом, мы соединим ячейку Constant не только с ячейкой Divide, но и
Multiply

Вот что теперь будет происходить с материалом:


UE4 рассчитает время, которое материал будет воспроизводиться > разделит его на 5 (или какое число вы установили в значениях), чтобы
определить скорость анимации. Результат будет в виде дроби, которую UE4 потом опять умножит на 5 (или какое число вы установили в
значениях).

Например:

Наше время - 32.231 секунд.

32.231 / 5 = 6.4462

Теперь 0.4462 умножается на 5, и получаем результат - 2.231.

Идеальная скорость, мне кажется.

Теперь материал должен выглядеть так:


Шаг #10 - Вернемся к ячейке «if». Белый кружок рядом с «А» закрашен, но остальные остаются прозрачными. Нужно изменить это. Создаем
константу (Нажимаем «1» на клавиатуре или воспользуемся поиском «Constant» в библиотеке, которая находится справа) и в параметрах,
которые находятся справа устанавливаем значение «1» (value = «1»).

Согласно ячейке «if», пункт «А» - это время (Time), а пункт «В» отвечает на вопрос: «Что такое флипбук?». Поскольку в последовательности
это первый флипбук, «В» будет равно единице, а установим мы этот параметр, присоединив константу (со значением «1») к пункту «В».

Шаг #11 – Выделяем незакрашенный пункт "A<B" (в самом низу ячейки «if») и печатаем в поле поиска "Flipbook". Это будет основой первой
стадии Анимации.

Шаг #12 – Создаем две константы для нашего флипбука, одна из них будет отвечать за количество рядов в спрайт-листе, другая – за
количество колонок. (для создания констант нажимаем «1» на клавиатуре или пользуемся поиском в библиотеке. Мы можем изменять
предустановленные значения в параметрах(properties), которые находятся слева и внизу в вашем Material Blueprint).
Шаг #13 – Перетащите курсор влево от пустого кружка рядом с пунктом "Texture T2d" и в поле поиска напишите: "Texture Object"(Объект
текстуры). В параметрах Texture Object, настройте первый спрайт-лист.

Шаг #14 – Перетащите курсор влево от пустого кружка рядом с пунктом "Uvs" на ячейке Flipbook и в поле поиска ищите
"Texturecoordinate"(координаты текстуры).

Шаг # 15 – Наш первый флипбук установлен, но тем не менее, сейчас мы разделимся на две группы.

Если у вас ЕЩЕ один Спрайт-лист:

Шаг #1 – Копируем Флипбук и ответвляющиеся от него ячейки (Зажимаем Ctrl и кликаем на ячейки одну за другой, затем нажимаем Ctrl + C
на клавиатуре (Еще один способ: клик правой клавишей мыши [или Ctrl + клик] и выбор варианта «Copy»).
Шаг #2 - Нажимаем Ctrl + V (Кликаем правой клавишей мыши [клик Ctrl + клик] на пустое пространство под ячейкой Flipbook и создаем копию
Flipbook).

Шаг #3 – Кликаем на ячейку Texture Object и в окне с параметрами (Properties) изменяем текстуру, чтобы настройки подходили к второму
спрайт-листу (также изменяем константы, чтобы те соответствовали количеству рядов и колонок, если необходимо).

Шаг # 4 – Соедините пустой кружок рядом с пунктом «Result» на втором Флипбуке и пустой кружок рядом с пунктом “A>=B” на ячейке «if».
Когда вы это сделаете, соедините теперь уже закрашенные белый кружок рядом с пунктом «Result» на втором Флипбуке и пустой кружок
“A==B” на ячейке «if».Теперь все пункты в ячейке «if» должны быть присоединяться к чему-либо.

Что мы сейчас сделали? - Давайте посмотрим на ячейку «if». Вот, что теперь будет происходить:

- If “A” – Это обычное время воспроизведения материала


- If “B” – Это те элементы, которые флипбук должен воспроизводить.

- If “A>=B” – Если параметр времени больше или такой же, как количество элементов, которые флипбук должен воспроизводить, будет
запускаться ВТОРОЙ флипбук.

- If “A==B” – Если параметр времени такой же, как количество элементов, которые флипбук должен воспроизводить, будет запускаться
ВТОРОЙ флипбук.

- If “A<B” - Если параметр времени МЕНЬШЕ, чем количество элементов, которые флипбук должен воспроизводить, будет запускаться
ПЕРВЫЙ флипбук.

Материал теперь должен выглядеть так, как на скриншоте. И если все совпадает с картинкой, вы только что создали анимированную версию!
Если у вас БОЛЬШЕ, чем 2 спрайт-листа, мы поступим немного другим способом! Вернемся к тому моменту, когда мы только настроили
первый Flipbook.

- Если у вас БОЛЬШЕ, чем ЕЩЕ ОДИН спрайт-лист:

Шаг #1 - Копируем Флипбук и ответвляющиеся ячейки (Зажимаем Ctrl и кликаем на ячейки одну за другой, затем нажимаем Ctrl + C на
клавиатуре (Еще один способ: клик правой клавишей мыши [или Ctrl + клик] и выбор варианта «Copy»).

Шаг #2 - Нажимаем Ctrl + V (Кликаем правой клавишей мыши [или Ctrl + клик] на пустое пространство под Flipbook и создаем копию ячейки
Flipbook).

Шаг #3 - Кликаем на ячейку Texture Object и в окне с параметрами (Properties) изменяем текстуру, чтобы настройки подходили к второму
спрайт-листу. (Также изменяем константы, чтобы те соответствовали количеству рядов и колонок, если необходимо)

Шаг #4 - Снова возвращаемся к ячейке «if». Нам нужно скопировать эту ячейку, также как и константу, которая присоединяется к «В». Поэтому
зажимаем Ctrl и кликаем и на ячейку «if», и на цифру «1», которую мы ввели в ячейку «В». Нажимаем Ctrl + C (Или клик правой клавиши
мыши [Ctrl + клик] > Копировать (Copy)), чтобы скопировать их и Ctrl + V (Или клик правой клавиши мыши [или Ctrl + клик] > Вставить (Paste
Here), чтобы создать копии. Перемещаем скопированные элементы ниже первой ячейки «if».

Шаг #5 – Соедините кружок рядом с кнопкой «Result» на второй ячейке Flipbook и кружок рядом с пунктом “A<B”на второй ячейке «if». Когда
сделаете это, соедините правый кружок на ВТОРОЙ ячейке «if» и кружок “A>=B” на первой ячейке «if», потом этот же правый кружок на второй
ячейке «if» и пункт “A==B” на первой ячейке «if». Когда сделаете это, измените значение параметра на константе ВТОРОЙ ячейки «if»
(Которая присоединена к «B») на «2». (Смотрите на скриншот, чтобы не запутаться)
Шаг #6 –Первая ячейка «if» есть присоединена к ячейке «Multiply», а вторая ячейка «if» - нет. Исправьте это: соедините на пустой кружок «А»
на второй ячейке «if» и ячейку «Multiply», которая отвечает за время. Таким образом, флипбуки буду воспроизводиться у нас в одной время.

Шаг #7 – Если вам нужен еще один (или несколько) флипбуков для спрайт-листа повторяйте шаги 1-6, пока у вас на останется ячейка «if» с
соединенным пунктами “A”, “B” и “A<B” и последняя ячейка Flipbook, которую нам нужно будет присоединить.

Шаг #8 – Мы соединили спрайт-листы 1 и 2, теперь нужно присоединить спрайт-лист 3 (А если вы используете больше 3 спрайт-листов, у вас
соединены 1,2 и 3, а теперь нужно присоединить 4 и т.д.) Если бы мы создали еще одну ячейку «if», у нас осталось бы слишком много
несоединенных пунктов, с которыми мы должны были бы что-то делать.

Я имею в виду, как бы мы смогли одновременно соблюсти условие “A<B” и “A>==B”, используя одно и то же значение параметра? Все только
запутается.
Вот как мы поступим с последним спрайт-листом:

Шаг #9 – Копируем предыдущий флипбук и его дочерние элементы (Константу рядов, константу колонок, ячейки «texture» и
«TextureCoordinate») и вставляем их под последним флипбуком.

Шаг #10 – Изменяем текстуру, чтобы она соответствовала последнему спрайт-листу. (Изменяем число рядов и колонок если необходимо!)

Шаг #11 – На выходе у последнего флипбука мы должны получить результаты “A>=B” и “A==B”, поэтому соединяем пункт Results на последней
ячейке Flipbook и соответствующие пункты на ячейке «if». (А именно “A>=B” и “A==B”).

И это базовые основы флипбук и анимации! Если вы используете три текстуры, ваш Blueprint должен выглядеть так:
Обратите внимание на то, как сложно все выглядит, но как просто это оказалось на деле. Это суть системы Blueprints: притвориться
сложной и непонятной. Но стоит внимательно проследить действия шаг за шагом, вы поймете простоту системы визуального скриптинга.

Тем не менее, иногда непросто не запутаться во всех этих линиях спагетти на экране, мы разберемся что делать с этой проблемой чуть
позже!

Заметка! – Прежде, чем продолжить, неплохо было бы вспомнить про излучаемые цвета. Если ваш анимированный портал слишком
темный, а вы хотите, чтобы свечения было больше, подключите первую ячейку «if» к излучаемым цветам (emissive colors) также,
как мы делали с базовыми цветами (base colors).
Создаем Портал!
Итак, у нас есть готовый материал для портала, теперь нужен и сам портал. Есть несколько способов, которыми мы можем воспользоваться,
но я начну с самого понятного, четкого и структурного!

В первую очередь нам необходимо найти папку с содержанием движка (Engine content folder) в вкладке Content Browser.

Шаг #1 – Переходим во вкладку Content Browser

Шаг #2 – Кликаем на функцию “View Options” (посмотреть опции) с значком глаза перед ней.

Шаг #3 – Возникнет всплывающее меню, пункт «Show Engine Content» (Показать содержание движка) не будет отмечен галочкой. Нам
нужно посмотреть это содержание, поэтому отмечаем пункт галочкой и в содержании папок слева вы увидите пункт “Engine”, сразу выше
пункта “Game”.
Шаг #4 – Во вкладке Content Browser нажимаем на большую кнопку “Engine”, которая находится в меню с папками слева наверху.

Шаг #5 – Когда вы нажали на Engine, наберите в поле поиска справа “EditorPlane”(Редактор плоскостей).

Шаг #7 – Кликаем на EditorPlane чтобы выделить его. Когда выделите, кликните правой клавишей мыши [или Ctrl + Click] и выберите
вариант «Скопировать» (Make Copy), таким образом вы сделаете копии EditorPlane. Введите любое название на ваш выбор … У меня это
будет “Mesh_Portal”.(Портал мэша)

ЗАМЕТКА: Когда вы назовете копию, Content Browser может выкинуть вас обратно в папку Engine. Если это произойдет,
промотайте полосу прокрутки до тех пор, пока не увидите вашу копию.

Шаг #8 – Кликаем на Portal mesh и перетаскиваем его в папку, которую мы создали ранее в наших уроках (Или куда-нибудь, где вы
запомните ее расположение)

Шаг #9 – После перемещения кликаем дважды на mesh и он откроется в Редакторе статического мэша (Static Mesh Editor).
Теперь вы возможно думаете: Зачем мы все это сделали?

Что ж… Для нашего портала нужен самый демократичный мэш, который мы можем себе позволить, а его можно создать только с помощью
EditorPlane. Но, заглядывая в будущее, мы не сможем прикрепить материал к EditorPlane’s, так как находимся в Portal blueprint.

Итак, мы создали EditorPlane, чтобы редактировать материал, теперь можно импортировать его в blueprint и изменять его в EditorPlane
(Который теперь называется “Mesh_Portal” или, как вы его назвали)

Шаг #10 – В редакторе статического мэша справа вы увидите “Element 0” под LOD1, к нему будет прикреплен “WorldGridMaterial”.(материал
сетки мира)
Шаг #11 – Нажмите маленькую серую стрелочку рядом с “WorldGridMaterial”, и в поле поиска введите название материала, который вы
создали.

ЗАМЕТКА: Если материал ложится плохо (Исчезает с экрана, накладывается дважды или подобные проблемы), вернитесь в его
настройки и измените параметры “TexCoord”. Обычно отмена параметра “Un mirror V” решает проблему, но, возможно, вам
придется повозиться с настройками в «TextureCoordinate», пока материал не будет идеально ложиться в EditorPlane. Не забывайте
нажимать Apply, когда вы что-то изменяете, иначе в EdtiorPlane обновления параметров материала не покажутся.

Теперь материал находится в EditorPlane, поэтому начнем составлять Blueprint портала!


Собираем blueprint портала
Шаг #1 – Возвращаемся в вкладку Content Browser и открываем Portal BP (это мое название: “BP_Portal”, у вас может быть другое)

После этого откроется вкладка компонентов (Components tab) редактора Blueprint. Если вкладка с компонентами не открылась, вы можете
найти ее в панели навигации наверху и справа в редакторе Blueprint.

Шаг #2 – Под кнопками Compile и Save находится выпадающее меню “Add Component” (Добавить компоненту). Для практики можете кликнуть
на него и добавить сцену. Это значит, если вы каким-либо образом измените положение Blueprint, координаты 0.0.0 изменятся тоже (изнутри),
и вы не представляете сколько раз это вас спасет позже.

Заметьте, что неважно, как вы назовете эту “Scene”, поскольку ее главная функция: быть вместилищем для игроков / элементов / мэшей,
которых мы поместили в Blueprint.
Шаг #3 – Когда вы создали “Scene”, снова кликните на меню “Add Component”. В этот раз введите “Static Mesh” и кликните. Это будет наш
портал.

Полезная заметка: Теперь вы можете увидеть, что Static Mesh, который мы только что создали, стал в иерархии дочерним
элементом по отношению к “Scene1”. Если дело обстояло не так, а Scene1 по ошибке или случайно стал дочерним элементом к
Static Mesh, просто кликните на Scene1 и перетащите его на место родительского элемента, и теперь в нашем blueprint элемент
scene1 стал родительским элементов для всего остального.

Шаг#4 - Кликните на Static Mesh, который вы только что создали (он находится под меню “Add Component”). Если вы прокрутите вниз меню
Детали (“Details”), вы увидите раздел под названием “Static Mesh” с большим белым прямоугольником с надписью “Static Mesh” и с узким
серым прямоугольником также с надписью “Static Mesh”.

Шаг#5 – Кликните на светло-серый прямоугольник и введите в поиске файл, который вы создали с помощью EditorPlane. У меня он называется
“Mesh_Portal”.
Теперь EditorPlane находится в blueprint, некоторые из вас не смогут увидеть его! Поверьте мне, он здесь. Есть только кое-что, что вам нужно
сделать, если вы его не можете увидеть:

У EditorPlane одна сторона, а сейчас мы смотрим на его нижнюю часть. Нужно, чтобы он отображался правильно. Но Unreal Engine работает
видит в первую очередь ось координат игрек …

На панели «Details», под пунктом «Rotation»(вращение), изменим параметр Y-Rotation на 180.0. Это действие повернет ваш портал на 180
градусов, и он будет отображаться правильно.

(Как если бы я был назойливой канцелярской скрепкой-помощником из MS Office, я бы повторил вам: неплохо было бы сохранить
изменения сейчас, чтобы не потерять данные! Просто нажмите на значок дискеты! Вы также можете нажать на Compile, это на ваше
усмотрение!)

Ваш портал сохранен в Blueprint. Мы почти закончили!

Теперь нам понадобится пусковой элемент (trigger box). Что это значит? Когда что-то или кто-то взаимодействует с ним, этот элемент
активируется. Зачем он нам нужен? Чтобы игрок мог зайти в портал, а затем переместиться на следующий уровень.

Шаг #6 – Кликните на выпадающее меню “Add Component”, на этот раз введите в поле поиска “Box” и кликните.

Шаг #7 – В параметрах элемента «Box» вы увидите три виджета: красный, зеленый и голубой, которые называются соответственно
“Location”(Расположение), “Rotation”(Вращение) and “Scale”(Шкала). Введите эти параметры для осей X, Y, Z виджета Scale:

Scale X: 0.5

Scale Y: 3.5

Scale Z: 3.5

Это оптимальные размеры для того, чтобы пусковой элемент работал, но не был слишком большим для портала, чтобы игрок не задевал
его случайно, когда он совсем не хочет перемещаться в другое место.
Шаг #8 - В параметрах элемента «Box» выше раздела «Transform» (Изменения), есть раздел “Variable” (Переменная), в которой есть
параметр “Variable Name”(Имя переменной). Давайте назовем переменную “Trigger_Portal”.

Теперь Blueprint должен выглядеть так:


Итак, нам больше не нужно пусковых элементов, которые бы загружали с этого уровня следующий (это было бы ужасно), поэтому нам нужно
изменить параметры взаимодействия в нашем Trigger_Portal. Справа от разделов «Variable» и «Transform» есть небольшая полоса прокрутки,
с помощью которой мы можем увидеть больше параметров.

Прокручиваем меню вниз и находим раздел “Collision” (столкновение).

Шаг #9 – Под разделом “Collision”, есть “Collision Presets” (преднастройки столкновения) там предварительно уже отмечен пункт
“OverlapAllDynamic” (перекрывать динамические элементы). Нажмите на “OverlapAllDynamic” и замените его на “OverlapOnlyPawn”
(перекрывать только игрока). Так мы предотвратим возникновение багов, которые могут испортить всю игру!
Наш портал почти готов! Осталось доделать совсем немного, чтобы он мог функционировать на 100%. Что мы должны сделать в первую
очередь, так это вернуться на наш уровень и поместить портал в стене, чтобы он органично там располагался.

Ищем дом для портала


Выше вкладки Content Browser, есть раздел, который называется “Modes” (Режимы). В нем мы можем добавлять геометрию, свет, пусковые
элементы и многое другое! Этот раздел Unreal Engine довольно актуален для нас, ведь прямо сейчас мы с помощью него сделаем проем в
стене, и поместим туда портал.

В левой части окна есть несколько опций, таких как:

- Recently Placed (Недавно перемещенные)

- Geometry (Геометрия)

- Lights (Свет)

- Visual (Визуальное)

- Basic (Основное)

- Volumes (Объем)

Прямо сейчас мы создадим небольшую коробку, чтобы оценить, как будет выглядеть стена потом. Для этого мы воспользуемся функцией
«Geometry» и перенесем элемент «Box» в рабочую область.

Шаг #1 – На панели “Modes”, выбираем пункт «Geometry», кликаем на элемент «Box» и перетаскиваем его на рабочую область. Теперь мы
можем видеть его на экране.
Шаг #2 – Кликните на только что созданный элемент «Box» на рабочей области, и справа вы увидите “X - 200, Y - 200 и Z - 200”, сразу под
настройками кистей. В нашем упражнении я рекомендую изменить “Z - 200” на “Z - 240”, чтобы портал отображался корректно.

Шаг #3 – Еще раз кликните на «Box» и с помощью настроек шкал XYZ переместите этот элемент в нужную стену. Небольшой кусочек коробки
будет видно из стены (должно выглядеть как дверь).

Подсказка: (Если вы не видите шкал XYZ, нажмите на клавиатуре «W», чтобы они появились)

Выровняйте «Box» так, чтобы этот элемент касался пола. (Мы можем изменить эти настройки позже). Экран должен выглядеть примерно так:
Шаг #4 – Вернитесь к настройкам кистей (Brush Settings) на правой панели, они находятся прямо над шкалами XYZ (куда мы вводили
значение Z чуть раньше). Там есть параметр, который называется “Brush Type” (Тип кисти), сейчас там настроено значение Additive
(добавочная кисть). Кликните на Additive и измените этот параметр на Subtractive (дистрибутивная). Вы тут же увидите, как элемент «Box»
изменится!

Если после этих изменений элемент «Box» частично «ушел под землю», просто выделите его снова и с помощью параметров XYZ (если
они не отображаются, есть клавиша «W») приподнимите ее.

Заметка: Вам может потребовать отключить сетку координат и подогнать значения функций так, чтобы элемент «Box» идеально
стыковался с полом. Функции находятся на верхней полосе меню, прямо над рабочей областью. Они выглядят так:
На этом скриншоте на инструментах «Grid» (сетка координат), «Angle» (угол) и «Scale» (шкала) выставлены значения 10, 10 и 0.25 градусов
соответственно.

Если у вас выходит перемещать «Box» на расстояние либо больше, либо меньше, чем нужно, и вы не можете найти идеальное положение,
кликните на оранжевые кнопки рядом с этими инструментами. Так вы отключите функции «Grid», «Angle» и «Scale» и сможете установить
«Box» так, как захотите.

Для удобства работы в Unreal Engine: как только вы установили «Box» в идеальную позицию, не забудьте снова нажать на
оранжевые кнопки и активировать инструменты «Grid», «Angle» и «Scale».

Теперь у вас на экране должно отобразиться нечто подобное:


Шаг #5 – Вернитесь назад во вкладку «Content Browser», кликните на «BP_Portal» (Или как вы назвали ваш Portal Blueprint) и перетащите его
на рабочую область.

Теперь портал в игре, а если вы не видите его, он расположен неправильно.

Чтобы исправить это: выделите и нажмите на Portal Blueprint, который находится в рабочей области (НЕ во вкладке Content Browser!). Затем
нажмите «E» на клавиатуре (или инструмент вращения (rotator tool), который находится наверху рабочей области), чтобы активировать эту
функцию. Затем кликните на голубую ось портала и перетащите ее на 180 градусов влево или вправо. Теперь вы должны видеть свой портал.
Шаг #6 – Теперь с помощью шкал XYZ (если вы их не видите, используйте клавишу «W» на клавиатуре или кнопку наверху рабочей области)
поместите Blueprint ВНУТРЬ проема, который мы создали с помощью элемента «Box».

Теперь Blueprint в игре и портал тоже! Вы можете сами взглянуть на результат, нажав кнопку «play», которая находится наверху редактора.

Настало время сделать портал... порталом!


Для следующего шага мы должны изменить blueprint персонажа (Character blueprint). Настройка по умолчанию для нашего шаблона
называется “MyCharacter”, тем не менее, если вы ее изменяли, мы будем редактировать тот blueprint персонажа, который у вас есть (мы
научимся, как создавать его самим, когда глубже погрузимся в blueprint в этой книге!)
Шаг #1 – Убедитесь, что вы находитесь в папке “Game” во вкладке «Content browser». Для этого нажмите на большое слово «Game» в меню
с папками.

Шаг #2 – В поле поиска введите “MyCharacter” (или то, как вы назвали ваш Character Blueprint).

Шаг #3 – Кликаем дважды на «MyCharacter», чтобы открыть blueprint персонажа.

У Вас должна открыться раздел “Graph”, но если вы попали в раздел “Defaults” (Шаблоны) или “Components” (Компоненты), посмотрите на
верхнюю часть меню, где написано “Defaults, Components, Graph”, чтобы узнать, где вы, и перейдите в раздел “Graph”.
Шаг #4 – Кликните правой клавишей мыши (или комбинация Ctrl + клик) в пустой части Blueprint (увеличьте масштаб с помощью колесика
мыши, если необходимо) и в появившемся поле поиска введите “Overlap” (перекрыть), затем отметьте пункт “On Actor Begin Overlap”
(событие начинается при столкновении с героем), который находится по разделом “Collision” (столкновение).
Теперь нам нужно настроить Portal blueprint так, чтобы портал реагировал, когда игрок касается или дотрагивается до него. Нам нужно кое-
что под названием “Cast”.

Что такое Cast? – В нашем случае «cast» связано с событием, которое называется “Actor Begin Overlap” (событие начинается при
столкновении с героем). С помощью cast мы узнаем, что игрок дотронулся до того, с чем «cast» связан (если, конечно, игрок дотронулся до
этого). Допустим, если мы применим действие «cast» к лестнице, станет известно, что игрок стоит на лестнице, когда он на ней окажется и
т.д.

Шаг #5 – Нам нужно соединить портал с игроком, поэтому кликаем на пустой голубой кружок рядом с “Actor Begin Overlap” и тащим курсор
вправо. В поле поиска печатаем “Cast to BP_Portal” (применить «cast» к BP_Portal) или “Cast to (ваше название BP)”. После этого появится
“Cast to BP_Portal (Или имя вашего Blueprint)”. Выбираем этот пункт – соединение с Portal blueprint теперь установлено! Портал и игрок могут
взаимодействовать друг с другом.
Шаг #6 – Поскольку можем взаимодействовать с BP_Portal, нам нужно скомандовать ему открыть следующий уровень. Поэтому кликаем на
пустой треугольник выше пункта “Cast Failed” (сбой функции «cast») тащим курсор вправо. Когда откроется сжатая библиотека Blueprint,
вводим в поле поиска “Open Level” (открыть уровень).

Шаг #7 – Вы заметите, что внутри ячейки “Open Level” (открыть уровень), напротив Level Name (название уровня), написано “None”
(отсутствует). Если вы кликните на поле с текстом и введете имя своего уровня, то портал заработает.
Заметка: Поскольку мы сделали этот алгоритм в рамках одного события (а именно «Actor Begin Overlap»), нам не нужно подключать
к blueprint что-то еще. Но если ваша цель выходит за рамки этого события, придется сделать еще несколько подобных
манипуляций.

Теперь можно компилировать и сохранять. Для этого кликните на значок с движком и значок дискеты, которые находятся вверху окна Blueprint
и посмотрите на результат, нажав кнопку Play выше рабочей области в главном окне Unreal Engine.

Есть способ получше!


Портал работает, и можно порадоваться этому. Вы только что написали первую строчку кода! Но подождите пару мгновений… Что если
BP_Portal понадобится нам на следующем уровне? Будет ли это значить, что, если мы не сможем изменить название уровня в игре, уровень
«2» будет загружаться снова и снова?
Способ, который мы использовали выше, а этом случае ОЧЕНЬ быстро загрязнит blueprint “MyCharacter”. Есть способ гораздо лучше!

Шаг #1 - Удаляем “On Actor Begin Overlap” и все, что мы до этого создали в blueprint персонажа.

Мне кажется вы думаете про себя – Какого черта?! Почему?! –Доверьтесь мне.

Шаг #2 – Во вкладке «Content Browser», находим “BP_Portal” (или как он у вас называется) и кликаем на него дважды, чтобы открыть Blueprint.

Шаг #3 – Переходим в раздел Graph нашего blueprint (используя верхнюю панель навигации) и добавляем “On Actor Begin Overlap”, ТАК ЖЕ,
как мы до этого делали в blueprint персонажа.

Шаг #4 – Нажимаем на пустой голубой кружок и перетаскиваем курсор вправо. В открывшейся сжатой библиотеке Blueprint, ищем “Cast to
MyCharacter (или имя вашего Character blueprint).

Шаг #5 – Теперь, как мы делали до этого в blueprint персонажа, кликаем на пустой треугольник над пунктом “Cast Failed” в ячейке «Cast»,
тянем курсор вправо и ищем в поле поиска “Open Level”(Открыть уровень).
ШАг #6 – Не забываем в строке “Level name: None”, изменить «none» на название нашего второго уровня.

Теперь у нас есть чистенькая версия того, что мы делали ранее в blueprint персонажа. Что делает ее лучше? Если мы хотим изменить имя
уровня, мы можем скопировать весь blueprint и изменить имя в строке “Open Level” на то имя уровня, которое вам нужно.

Но… *Драматическая пауза*... Вы могли кое-что заметить, когда открывали портал …

Когда загружается новый уровень, игра зависает на пару моментов на время загрузки. Некоторым игрокам это не мешает. Но большинство
раздражает зависшая картинка, и они хотят избавиться от этой проблемы. Как это сделать?

...Конечно же, с помощью экрана загрузки!

Создаем экран загрузки!


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

Шаг #1 – Импортируем текстуру, которую хотите использовать для вашего экрана загрузки (заходим в вкладку Content Browser > выбираем
Import)

Шаг #2 – Кликаем правой клавишей мыши на импортированную текстуру и выбираем вариант “Create Material…”(Создать материал)

Шаг #3 – Открываем материал и соединяем ячейку “Texture Sample” (Образец текстуры) с пунктом Base Colour (базовые цвета) и Emissive
Colour (излучаемые цвета) - (не забудьте сохранить изменения!).
Для следующих шагов нам понадобится окно HUD (head-up display - всплывающее окно с информацией). Для тех, кто не знает, что такое
HUD, - это окно, которое видит на экране игрок, на нем обычно показано меню, время, сколько монет он заработал на данный момент и т.д.

HUD в общем смысле – это вся информация на экране, которая не является элементом игрового мира, но тем не менее, она должна быть
отображена.

Шаг #4 – переходим в вкладку Content Browser, заходим в папку TutorialContent (или как вы назвали вашу папку) и с помощью верхнего меню
во вкладке создаем новый Blueprint.
Шаг #5 – Внизу окна “Pick Parent Class” (выберите родительский класс) есть раздел под названием “Custom Classes”. Если мы кликнем на
пустую серую стрелку слева, мы увидим все классы, которые мы можем использовать как основу для нашего blueprint.

Шаг #6 – Если вы введете в поле поиска “HUD”, вы увидите несколько опций. Тот HUD, который нам нужен является дочерним элементом по
отношению к “Actor” и родительским элементом к некоторым другим опциям.
Отметьте нужный “HUD” левым кликом на мыши и нажмите «Select» внизу экрана.

Шаг #7 – Назовите blueprint, который вы только что создали, как-нибудь наподобие “HUD_Portal”. Это будет окно HUD для этого уровня.

Что мы только что сделали? – Мы создали blueprint. Почему мы сделали blueprint в режиме HUD? В режиме HUD можно создавать ячейки,
которые обычно недоступны!

Теперь нужно обязательно сделать одну важную вещь!


Шаг #8 – В меню над рабочей областью, вы видите несколько разделов. Рядом с “Quick Settings” (Быстрые настройки) и перед “Blueprints”
есть раздел “World Settings” (настройки мира). Зайдите туда.

Шаг #9 – После того, как вы это сделаете, появится еще одна вкладка, рядом с вкладкой «Details» справа внизу. Если она не открылась,
кликните еще раз на раздел “World Settings” и она появится.
Шаг #10 – С помощью меню прокрутки найдите в разделе “World Settings” пункт “GameMode” (игровой режим).

Шаг #11 – Напротив пункта “GameMode Override”, сменить вариант «None» и на “MyGame”(Моя Игра).

Шаг #12 – Нажмите маленькую кнопку перед пунктом “Selected GameMode” (выбранный режим игры) и появятся параметры игрового режима
“MyGame”.

Шаг #13 – Рядом с пунктом HUDClass, нажмите на выпадающее меню и выберите HUD, который мы только что настроили.
Теперь вы можете закрыть вкладку World Settings (Что я настоятельно рекомендую сделать, потому что легко запутаться, когда вы захотите
изменить что-то)

Заходим в HUD blueprint и готовимся настроить его по высшему разряду.

Шаг #14 - Открываем HUD_Portal (или как вы его назвали) из вкладки Content Browser.

Настроим HUD по высшему классу!


Шаг #1 – Когда вы открыли HUD_Portal (или как вы его назвали), может также открыться раздел “Components” (Компоненты), используйте
верхнюю панель навигации, чтобы попасть в раздел “Graph”!
Шаг #2 – В любом месте Blueprint, кликаем правой клавишей мыши и ищем в поле поиска “Event Draw HUD” (событие, вызывающее HUD).

Понимаете ли вы, что мы только что сделали? – То, чего мы не смогли бы сделать в обычном blueprint. Все благодаря тому, что мы
работаем в blueprint класса “HUD” и можем создавать ячейки, недоступные в другом режиме.

Шаг #3 – Кликаем правой клавишей мыши (или Ctrl + клик) справа от «Event Draw HUD» и печатаем: “Make Vector2D” (создать вектор 2D). Это
та ячейка, которая пригодится нам позднее.

Шаг #4 – Соединяем пустой кружок рядом с пунктом “Size X” на ячейке “Draw HUD” и пустой кружок “X” на ячейке “Make Vector 2D”.

Вы, наверное, видите, что ячейки разного цвета (это обозначение разных параметров), но, как только вы соедините их, Unreal Engine
автоматически преобразует значения, и вам не придется совершать лишних действий.

Шаг #5 – Сделайте то же самое для пустого кружка “Size Y” и пустого кружка “Y” на “Make Vector 2D”
Шаг #6 – Перетащите курсор от пустого кружка рядом с пунктом “Return Value” на ячейке “Make Vector 2D” вправо и выберите вариант “Promote
to Variable”(повысить ранг до переменной).

Что мы только что сделали? – Мы создали первую переменную! Но что это значит? Это значит, мы можем использовать ее снова и
снова и изменять ее значение тогда, когда захотим.

Это и есть суть переменных:

Bool (логическая) – может иметь значения «да» или «нет», может храниться и использоваться снова

Float (переменная с плавающей запятой) – имеет числовое значение (может иметь цифры после запятой), может храниться и
использоваться снова.
Int (целое значение) – имеет числовое значение (цифр после запятой быть не может), используется, чтобы находить что-либо в
списках/рядах.

String (строковая переменная) – текст, который может храниться и использоваться снова.

Array (массив) – массив элементов/целых чисел, может храниться и использоваться снова.

Шаг #7 – Кликаем на только что созданную переменную “New Var” и, в левой части экрана, в параметрах “New Var”, изменяем “Variable Name”
(имя переменной) на “Screen XY” (Экран XY) или “ScreenDimensions” (размеры экрана).

Совет: если вы хотите оставить пробел в названии, добавьте в этом месте имени большую букву.

Шаг # 8 – Соединяем пустой левый треугольник на переменной “Size XY” и пустой треугольник справа на ячейке “Draw HUD”.
Важное ЗАМЕЧАНИЕ: все элементы в Blueprint так или иначе должны быть соединены с событием. Элемент может быть
присоединен к ячейке, но ячейка в свою очередь должна быть соединена с событием. События как правило отмечены красным
цветом, так что их легко найти!

Если вы будете следовать советам в этой книге, вы лучше поймете, что я имею в виду.

Шаг #9 – Мы настроили размер экрана, а теперь попробуем настроить действия игрока так, чтобы переходить от окна HUD к экрану загрузки.
Заходим в blueprint персонажа через вкладку Content Browser.

Шаг #10 – Внутри blueprint персонажа (убедитесь, что вы находитесь в разделе Graph), есть несколько опций в левой части экрана:

Например, опции “Variable” (переменные), “Function” (функции), “Macro” (макрорежим) и т.д. Нам нужно создать переменную, поэтому
кликаем на значок “+V”.
Шаг #11 – Автоматически будет создана переменная типа Bool (логическая, имеет значения «да» и «нет») Мы можем изменить тип
переменной, просто вариант «bool» стоит по умолчанию. Именно такой тип переменной нам и понадобится, нужно только изменить имя.

Поменяем его с “Variable Name” на “PortalLoader”.(загрузка портала).

Шаг #12 - Компилируем blueprint персонажа. Этот этап алгоритма очень важен. Если вы не скопилируете результат, мы не сможем
активировать «PortalLoader» нигде, кроме как в этом blueprint.

Заканчиваем с “MyCharacter” и переходим к BP_Portal (или как вы назвали свой).

Шаг #13 - закрываем “MyCharacter” (после того, как скомпилируем!) и открываем BP_Portal (или как вы назвали свой).

Шаг #14 – Переходим во вкладку “Graph” в BP_Portal.


Шаг #15 – Кликаем правой клавишей мыши (или Ctrl + клик) и в поле поиска пишем “Overlap” (перекрывание), затем выбираем: “On Actor Begin
Overlap” (действие начинается при столкновении с героем). Появляется ячейка «Overlap».

Шаг #16 – Тянем курсор вправо от пустого голубого кружка на ячейке «Overlap» и пишем в поле поиска: “Cast to MyCharacter”(применить
«cast» к mycharacter) (или ваше название blueprint персонажа).

Как вы могли догадаться, сейчас мы проделали ряд действий, чтобы активировать MyCharacter, а теперь вы узнаете кое-что классное о
функции «cast»!

Шаг #17 – Тянем курсор вправо от голубого кружка рядом с пунктом “As My Character C” и пишем “PortalLoader”(загрузка портала). Выбираем
опцию “Set PortalLoader”(установить PortalLoader).

Вы заметили, что мы только что сделали? Теперь мы можем редактировать переменную, находясь в другом blueprint. Что это нам дает? Мы
можем менять логические переменные удаленно.

Также мы можем менять числа и другие переменные, какие захотим! Пока мы можем применять действие cast к переменным, мы можем
менять их. Это один из ключевых элементов визуального скриптинга.

Шаг #18 – В ячейке “Set PortalLoader” есть неотмеченный пункт “Portal Loader”. Поставьте там галочку.

Что мы только что сделали? – Мы выполнили следующий алгоритм: Overlap > Cast > Portal Loaded (отметили). Если перевести это в
логическое выражение для портала: ЕСЛИ игрок стоит НА мне или КАСАЕТСЯ меня, то выполнять: “Portal Loaded”(загружать портал).

Это важный урок, надеюсь вы его усвоили.


Теперь портал как бы говорит игроку “эй, ты дотронулся до меня, я выполняю действие «Portal Loader» (загрузка портала)!” но теперь и окно
HUD должно быть настроено, чтобы «быть в курсе» этого события. Как это сделать? Просто! Убедитесь, что вы скомпилировали “BP_Portal”
blueprint а затем...

Шаг #19 – Вернитесь к “HUD_Portal” /или откройте его снова через вкладку Content Browser.

Вы могли заметить, что мы будто бы можем выполнять действие «cast» только в отношении событий, а точнее ячеек “Event Begin Overlap”
(перекрытие при начале события). Но это не так!

Мы можем выполнить действие «cast» еще множеством способов, что я вам сейчас продемонстрирую.
Шаг #20 – В пустом пространстве рядом с вариантом “Set “Screen XY” (установить «Экран XY»), кликаем правой клавишей мыши и в сжатой
библиотеке Blueprint ищем опцию “Get Player Character” (создать персонаж игрока). Убедитесь, что вы отметили именно пункт Character, там
не так много вариантов!

Шаг #21 – Перетаскиваем курсор вправо от пустого голубого кружка ячейки “Get Player Character” и в поле поиска пишем “Cast to MyCharacter”
(или имя вашего blueprint!)

Теперь мы связаны с blueprint персонажа напрямую!

Шаг #22 – Прежде чем мы забежим вперед, я скажу еще раз: У вас не получится активировать ячейки в blueprint, если они не будут связаны
с событием, либо с теми ячейками, которые связаны с событиями.

Поэтому перетаскиваем курсор от левого треугольника на ячейке “Cast” к правому треугольнику на ячейке “Set Screen XY”.
Шаг #23 – перетаскиваем курсор вправо от голубого кружка на ячейке “AsMyCharacter C” к “Cast”. Пишем в поле поиска “Get PortalLoader”.

Он понадобится нам буквально через несколько секунд.

Итак HUD, игрок и портал связаны между собой! Но что мы будем с этим делать?

Шаг #24 - перетаскиваем курсор вправо от пустого верхнего треугольника в ячейке “Cast to MyCharacter” и пишем в поле поиска “Branch”.
(ответвление)

Что мы только что сделали? - Функция «branch» - одна из самых важных в Blueprint. Она как бы говорит “Это произошло? Да или нет?”.

Шаг #25 – Соединяем пустой красный кружок на ячейке “PortalLoader” и пункт “Condition” (условия) в ячейке “Branch”.
Мы только активировали замечательный алгоритм! Мы спросили игрока “выполнять действие «Portal Loader»?”. Игрок затем обратился к
порталу: “выполнять это действие?” и если портал ответил утвердительно, игрок передает HUD, что все в порядке и действие нужно
выполнять.

И это сделали ВЫ! молодцы!

Теперь нужно настроить окно HUD так, чтобы выполнялись правильные действия в случае этого исхода …

Шаг #26 - перетаскиваем курсор вправо от белого треугольника “True” на ячейке “Branch” и пишем “Draw Material”(добавить материал), затем
выбираем пункт “Draw Material Simple”.
Шаг #27 – В левой части окна, там, где расположены все переменные, ищем элемент Screen XY и перетаскиваем его на рабочую область,
прямо под ячейку Branch. Когда в диалоговом окне появится вопрос, хотим ли мы применить параметр «Set» или «Get», нужно выбрать
вариант «Get».

Шаг #28 – перетаскиваем курсор немного вправо от темно-голубого кружка на ячейке “Screen XY” и в поле поиска пишем “Break Vector 2D”.
(разрушить Vector 2D)

Что мы сейчас сделали? - Экран XY - это экран измерений, который мы настроили ранее. Он определяет, какого размера должен быть
материал, чтобы заполнить весь экран. Ранее мы настраивали его в Vector 2D (чтобы было легче сохранить), теперь нужно удалить Vector
2D, чтобы мы смогли использовать материал.

Шаг #29 – перетащите курсор от кружка “X” в ячейке “Break Vector 2D” к области рядом “Screen W”, а от кружка “Y” к области «Screen H».
Шаг #30 – кликните серую стрелку, которая находится в ячейке “Draw Material Simple” рядом с пунктом “Material: None” (материал: отсутствует)
и указывает вниз. В выпавшем списке найдите материал для экрана загрузки (или воспользуйтесь поиском).

Шаг #31 – Перетащите курсор вправо от пустого белого треугольника на ячейке «Draw Material Simple». Введите в поле поиска в появившейся
сжатой библиотеке blueprint “Open Level”(открыть уровень) и, как мы делали раньше, напишите в поле «level name» название второго уровня
(у меня это “ArtOf_Example2”).
Вы сделали это! Вы не только создали портал, теперь у вас есть экран загрузки, который появляется при загрузке следующего уровня. Это
круто.

Компилируйте и можете протестировать, если захотите!

Если вы используете анимированный материал, создайте ячейку “Delay” (отложить), после того как создадите ячейку “Draw Material Simple”,
но перед “Open Level”, и установите в ней значение времени в 2 секунды.

Вы создали «многослойные» blueprint, настроили их, чтобы они могли передавать информацию друг другу. Вы сделали первый шаг не только
в освоении системы визуального скриптинга, но и в овладении лучшим движком из ныне существующих.
Используйте ваши знания для того, чтобы сделать другой портал, начиная от уровня 1 и далее, к уровню 3 и выше. Вы на один шаг ближе к
тому, чтобы стать мастером blueprint! Вперед!

Проект #1 – «Упакован»!
Итак, мы не только создали рабочий портал на уровне 1 и уровне 2, но также добавили экран загрузки, узнали о секретах системы Blueprint,
а также о принципах написания сценариев в целом.

Мы узнали о переменной типа Bool (логической переменной), о движке Unreal Engine в целом и о том, как настроить взаимодействие
нескольких Blueprints друг с другом!

У нас еще многое впереди, как минимум еще один проект, но я надеюсь знания о blueprint, которые вы получили, позволят вам чувствовать
себя более уверенно при работе с ним.

Следующий проект будет еще более увлекательным, поэтому оставайтесь на своих местах!

Цель #2 – Первая кровь II


Создание персонажа, который может двигаться только по одной оси, создание нескольких героев.

Шаблон:

Сценарий игры с горизонтальным перемещением - игрок может перемещаться вперед, назад и прыгать (Blueprint Side-Scroller)

Что вы узнаете:

- Как убить игрока;

- Как создавать несколько персонажей и переключаться между ними;


- Еще больше об окне HUD;

- Как собирать монеты;

- Как создавать анимационные заставки;

- Базовые основы применения заключительной обработки;

- Система хронометража

Что вам понадобится:

- программа Photoshop / Любая программа редактирования изображений (для создания элементов окна HUD)

Что вам еще может понадобиться:

- Микрофон

- Фоновая музыка

И снова… Начнем!
Для начала запустим Unreal Engine 4 и создадим новый проект!

Если вы не помните, как это сделать, при открытии Unreal Engine 4 появится приветственный экран лаунчера. Просто кликните на «launch» и
увидите Project Browser (Окно проекта).

На верху окна проекта есть ОГРОМНАЯ вкладка “New Project” (Новый проект). Кликните на нее и перемотайте список опций вниз, пока не
увидите вариант “Blueprint Side Scroller” (сценарий игры с односторонним перемещением). Ни в коем случае не отмечайте вариант “Code Side
Scroller” (код игры с односторонним перемещением)!
.Теперь вам нужно назвать ваш проект, нажать кнопку “Create Project” (создать проект) и пуститься в наше приключение!

Мы в деле!
Unreal Engine понадобится пара мгновений, чтобы создaть проект, а, пока он загружается, вы можете заметить, что игра выглядит немного
по-другому, чем в примере с “Third Person Blueprint”, который мы разбирали в прошлом уроке.

Нажмите кнопку “Play”, которая находится над редактором (Editor) и оцените то, что мы сделали!

Уделите пару минут знакомству с интерфейсом игры. Вы заметите, то все выглядит, как будто это 3D версия игры 2D. Вы увидите, что игрок
застрял, перемещаясь между осью Х и осью . Появляется иллюзия, что эта игра 3D на самом деле 2D. Мы называем это “2.5D”.

Итак, внесем несколько важных изменений.

Начнем с того, что добавим окно HUD, которое будет отображать время и собранные игроком монетки.
Подготовка к настройке HUD!
Для начала нам нужно создать шаблон HUD в программе, редактирующей изображения. Если вы не можете/не хотите это делать я добавил
файлы с примерами HUD, которые мы будем использовать, в шаблоны проектов (они доступны по адресу http://content.kitatusstudios.co.uk).

Нам понадобится как изображение HUD, так и черная, и белая картинка (черная не будет отображаться, белая будет).

Вот здесь пример того, что в результате нам понадобится:

Слева наш HUD (формат - .PNG), а справа наша «маска непрозрачности».

Суть в том, что черный цвет «маски непрозрачности» скрывает то, что по нашему замыслу окно HUD отображать не должно. Окно HUD должно
быть белого или серого цвета. Мы используем этот способ, потому что я еще не нашел другого метода в Unreal Engine для формата PNG
создавать степени прозрачности. Создание «маски непрозрачности» решает эту проблему.

Причина того, что в этом примере я использую серый, а не белый в том, что окно HUD должно быть немного прозрачным (но не слишком).
Это означает, что игрок сможет проходить через него и не упустить ни одной важной вещи, находясь на уровне.

Проделаем тот же алгоритм, как для окна HUD, для изображения монет (изображение монет также можно найти в файлах проекта по ссылке).

На данный момент у вас должно быть 4 файла: окно HUD, монета, два изображения “маски непрозрачности” (один для окна HUD, другой для
монет).
Настало время загрузить их в Unreal Engine 4!

HUD… HUD… и назад!


Шаг #1 – Как и в прошлый раз, создаем папку в Content Browser Library (библиотека содержимого браузера), чтобы иметь возможность
сохранять наши результаты.

Во вкладке выбираем пункт “GAME”, кликаем “New” наверху вкладки Content Browser и выбираем папку (folder).
Мы назовем эту папку “Tut_FirstBlood” (Руководство_ПерваяКровь) Назовите свою, как захотите.

Шаг #2 – Когда вы создали папку, откройте Content Browser и импортируйте все 4 файла текстуры в игру!

Как это сделать? Не выходя из папки “Tut_FirstBlood”, нажимаем кнопку «Import», которая находится наверху вкладки Content Browser, затем
отмечаем наши 4 текстуры.
Теперь текстуры загружены в программу, и нам нужно превратить их в материал. НО (и это важное но) нам не нужно делать материал из
ВСЕХ текстур, которые мы импортировали, потому что две из них – это «маски непрозрачности», а не элементы окна HUD.

Шаг #3 – Кликаем правой клавишей мыши (Или Ctrl + клик) на “TEX_Coin” (или как вы назвали текстуру для монеты) и выбираем “Create
Material” (создать материал), делаем то же самое для файла “TEX_HUD”. После этого переименовываем их в «MAT_Coin» (материал для
монеты) и “MAT_HUD”(материал для HUD) соответственно

Шаг #4 – Дважды кликаем на “MAT_HUD” чтобы открыть редактор материала для HUD.

Теперь мы должны настроить несколько опций для того, чтобы материал для HUD был идеальной формы.

Подготавливаем материалы для HUD


Сейчас мы находимся в редакторе материала (Material editor), открыт файл “MAT_HUD”, и, перед тем, как мы будем уверены, что материал
готов для использования в HUD, нужно установить несколько параметров.

Шаг #1 – Вытаскиваем образец текстуры (Texture Sample) из ячейки “Material Inputs” (исходные для материала).

Шаг #2 – Копируем образец текстуры (Texture Sample): кликаем на него, затем нажимаем Ctrl C + Ctrl V или кликаем правой клавишей мыши
(или Ctrl + клик) и выбираем вариант “Copy”. Затем снова кликаем правой клавишей мыши (или Ctrl + Click), чтобы вставить.

Шаг #3 – Кликаем на созданную копию “Texture Sample”, чтобы посмотреть параметры, которые появятся слева. В параметрах, рядом с
словом “Texture”, где находится изображение нашей текстуры HUD, кликаем на серое поле и ищем файл “Opacity_Hud” («маска
непрозрачности» для HUD).
Мы вернемся к “Texture Sample” через некоторое время, а сейчас нам нужно исправить несколько моментов, перед тем, как «маска
непрозрачности» наложится на материал.

Шаг #4 – От закрашенного белого кружка на первоначальном варианте ячейки “Texture Sample” (которая связана с Base Colour) перетаскиваем
курсор к Emissive Colour (излучаемые цвета). Мы делаем это для того, чтобы материал «освещал» себя сам, и был виден даже в темноте.

Шаг #5 – Снимаем выделение со всех ячеек в Материале, кликнув на пустое пространство вне редактора материала (Material Editor). После
этого вы увидите параметры на левой боковой панели.

В параметрах раздела «материал» есть параметр «Blend Mode» (режим смешивания). Но поскольку нам нужно настроить параметры
прозрачности, нам нужна ячейка «Opacity» (непрозрачность). Поэтому кликаем на выпадающее меню и выбираем вариант
“Translucent”(прозрачный).
Шаг #6 – Соединяем пустой кружок рядом с пунктом “Opacity Mask”, который в ячейке Texture Sample, с пунктом “Opacity” на ячейке “Material
Input”.

Это все действия, которые нужно совершить с файлом “MAT_HUD”, теперь окно HUD готово! Но… прежде чем мы не забыли…

Шаг #7 – Повторим шаги #1-#7 для “MAT_Coin” - (НЕ ЗАБУДЬТЕ сохранить)

Что теперь?
Теперь у нас есть два материала: MAT_HUD и MAT_Coin. Мы настроили и тот, и другой, чтобы их изначальная непрозрачность была скрыта,
поэтому можно помещать их в HUD.
Нам предстоит настроить HUD, установить такие параметры, чтобы в игре отображался нужный HUD в определенные моменты времени, и
поместить материалы в HUD. Но сначала мы сделаем кое-что другое …
Мульти-HUD!
В этом примере, мы создадим несколько персонажей и соответственно несколько HUD.

Для этого нам нужно больше текстур и материалов, которые будут использованы в HUD.

Я создал красный и зеленый вариант HUD, они лежат в папке “Assets” (ресурсы) по адресу http://content.kitatusstudios.co.uk – у вас есть
собственные заготовки HUD, просто используйте Photoshop или любую другую программу по редактированию изображений, чтобы сделать
красный и зеленый вариант. В результате у вас должно быть три изображения HUD: голубой, красный и зеленый.

ЗАМЕТКА: вам не нужна «маска непрозрачности» для этих версий, мы будем использовать ту, что сделали для предыдущего HUD.

Шаг #1 – Импортируйте свои или мои варианты в проект. Вы можете скопировать MAT_HUD, кликнув на нем правой клавишей мыши (или Ctrl
+ Click) и выбрав вариант “Create Copy” (создать копию). Назовите копии MAT_HUD2 и MAT_HUD3 чтобы соотнести с названиями текстур.

Шаг #2 – Затем откройте MAT_HUD2 и MAT_HUD3 и внутри редактора выберите варианты “Texture Sample” для этих материалов. Ячейки
Texture Sample должны быть присоединены к Base Colour и Emissive Colour.(Базовые/излучаемые цвета)

В разделе параметров Texture Samples (они слева внизу), измените имя “Texture” на соответствующую текстуру: в “MAT_HUD2” это должно
быть “TEX_HUD2”, а в “MAT_HUD3” - “TEX_HUD3”.

Теперь ваш список материалов должен выглядеть вот так:


Теперь нам нужно создать окно HUD и поместить эти материалы туда, но прежде, мы должны настроить игру так, чтобы HUD, который мы
создаем, выбирался в качестве базового.

Создаем окно HUD!


Шаг #1 – Заходим в вкладку Content Browser и в папку TutorialContent (или как вы назвали свою папку), затем с помощью кнопок в верхнем
меню создаем новый Blueprint.
Шаг #2 – Снизу окна «Pick Parent Class» (выберите родительский класс), есть раздел “Custom Classes”. Если мы кликнем на пустую серую
стрелку слева от него, мы увидим все классы, которые можем использовать как основу для blueprint.

Шаг #3 – Если вы введете в поле поиска “HUD”, появятся несколько опций. Нам нужен тот HUD, который является дочерним элементом
«Actor», но родительским элементом по отношению к другим опциям.
Выделите этот “HUD” (левой кнопкой мыши), затем нажмите «Select» внизу экрана.

Шаг #4 – Когда вы создадите blueprint, назовите его, например, “HUD_FirstBlood”. Мы будем пользоваться им на этом уровне

Теперь, когда мы создали HUD, нам нужно передать информацию Unreal Engine об этом. Сделать мы это можем через настройки мира (“World
Properties”) Обратите внимание, что эти настройки будут действовать только в течении текущего уровня, а не на протяжении всей
игры.

Шаг #5 – В меню, которое находится выше рабочей области есть несколько опций. Рядом с быстрыми настройками (“Quick Settings”) и перед
сценариями (“Blueprints”) есть раздел настройки мира (“World Settings”). Кликните на него.
Шаг #6 – Таким образом мы добавим вкладку рядом с панелью деталей (details pane) внизу справа. Если вкладка не открылась, еще раз
кликните на “World Settings”, и она появится в правой части экрана.

Шаг #7 – Прокрутите раздел “World Settings”, пока не увидите подраздел “GameMode”(режим игры).

Шаг #8 – Напротив пункта “GameMode Override”(приоритетный режим) кликните на кнопку «None» (отсутствует) и выберите вариант
“MyGame”.

Шаг #9 – Нажмите маленькую кнопку перед “Selected GameMode”(выбранный режим игры) и увидите параметры “MyGame” в разделе
GameMode.

Шаг #10 – Рядом с HUDClass кликните на выпадающее меню и найдите там HUD, который мы только что настроили (“HUD_FirstBlood”).

Теперь вы можете закрыть вкладку World Settings (и я настоятельно рекомендую это сделать, потому что легко запутаться, когда в
дальнейшем будете менять параметры).
Теперь зайдем в HUD_FirstBlood и настроим его для игры!

Шаг #1 – Кликните дважды на “HUD_FirstBlood”, чтобы он открылся в окне Blueprint. Если вы оказались не в разделе Graph, а в Components,
перейдите в раздел Graph с помощью верхнего меню.

Шаг #2 – Также как мы делали в прошлом проекте, кликаем правой клавишей мыши (или Ctrl + клик) на пустое пространство вне Blueprint и в
поиске находим “Event Receive Draw HUD”.(Событие, которое вызывает HUD)

Шаг #3 – Кликаем на пустой кружок рядом с пунктом “Size X” и тащим курсор вправо. Откроется “Compact Blueprint Library”. Вверху библиотеки
(прямо под полем поиска) есть раздел “Promote to Variable”(повысить ранг до переменной). Выберите этот вариант. Так мы создадим
переменную, которая появится в левой части библиотеки переменных (“Variable Library”).

Шаг #4 – Кликните на нашу новую переменную (“NewVar”) и в параметрах измените имя переменной (Variable Name) на “sizeX”.

ЗАМЕТКА: Когда вы начинаете название файла с маленькой буквы и заканчиваете большой, это дает Unreal Engine команду, что
между словами должно быть пространство. Звучит немного запутанно, позвольте пояснить на примере: Если вы назвали
переменную “Johnrainbowlikesfood”, Unreal Engine прочитает ее в одно слово. Но если вы назвали ее “johnRainbowLikesFood”, тогда
он увидит это как “John Rainbow Likes Food”.

Шаг #5 - Повторите Шаг #3 и #4 для «Size Y» на ячейке “Event Receive Draw HUD”.

Шаг #6 – Перетащите курсор от пустого белого треугольника на ячейке “Event Receive Draw HUD” к треугольнику на левой стороне ячейки
“SET Size X” (установить Size X), затем соедините пустой треугольник на правой стороне ячейки “SET Size X” с пустым треугольником на
левой стороне “SET Size Y” (установить Size Y).
Шаг #7 – Вернемся к нашему материалу для монет, нужно, чтобы монеты находились выше других элементов HUD (к которым мы вернемся
чуть позже).

Перетащите курсор от пустого треугольника на правой стороне ячейки “SET Size Y” вправо. Когда откроется “Compact Blueprint Library”,
введите в поле поиска “Sequence”(последовательность).

Что мы только что сделали? – Последовательность. Последовательность работает так: “Сначала происходит действие 1 (которое
связано с “Then 0”), затем происходит действие 2 (Которое связано с “Then 1”). Последовательности можно использовать по-разному.
Например, Blueprint позволяет создать только одну ячейку “Event Tick”. С помощью последовательностей вы можете расширить свои
возможности в отношении этой ячейки. В нашем примере последовательность поможет сначала установить материал для HUD «Then 0», а
ПОТОМ для монет - “Then 1”. И вновь, это может звучать слишком запутано, пока не увидите собственными глазами. Сейчас и увидите.

Шаг #8 – Перетаскиваем курсор от белого треугольника “Then 1” (НЕ ОТ “Then 0”) на ячейке “Sequence” вправо. Когда появится окно CBL
(“Compact Blueprint Library”), в поле поиска вводим “Draw Material Simple”. С помощью ячейки “Draw Material Simple” мы поместим материал
для монет в HUD.

На скриншоте выше я уже установил параметры для «Draw Material Simple», сделайте то же самое.

Шаг #9 – Если вы по каким-то причинам, не можете скопировать параметры с картинки, вот они:

- Target (цель): Оставьте как есть (Self).


- Material: Выберите файл “MAT_Coin”.

- Screen X: оставьте значение по умолчанию (0.0).

- Screen Y: Установите значение 100.

- Screen W: Установите значение 100.

- Screen H: Установите значение 100.

- Scale (шкала): Оставьте значение 1.

- Scale Position (позиция шкалы): Не отмечайте галочкой.

Нам нужно установить правильные координаты для Screen X, для этой цели мы используем “Size X”, который настроили ранее. Вычитаем -
250 из каждого параметра, чтобы установить правильное положение экрана:

Шаг #10 – Перетащите “SizeX” из библиотеки переменных (Variable Library), которая в левой части экрана, и переместите его в Blueprint
(Лучше поместите «Size X» под «Sequence»). Blueprint предложит вам два варианта: “Get” or “Set”. Поскольку нам нужно получить значение
переменной, выбираем «Get».

Шаг #11 – Перетаскиваем курсор от кружка рядом с “Size X” вправо и ищем в поле поиска CBL: “Float Int”, затем выбираем вариант “To Float
(Int)”.

Теперь вы видите, что от бирюзовой ячейки “Size X” отходит зеленая, с переменной “Float”. Зеленый кружок на «Float» идеально подходит к
зеленому кружку рядом с “Screen X” на ячейке «Draw Material Simple». НО, нам нужно отнять от параметров 250, чтобы материал находился
в правильном месте, иначе он попадет черт знает куда.

Шаг #12 – Перетаскиваем курсор вправо от пустого кружка на переходном элементе «Int» - «Float». В появившемся окне CBL пишем
“Subtract”(отнять) и выбираем пункт “Float - Float”.
Шаг #13 – Заметьте, что в ячейка «Size X» присоединяется к левому верхнему кружку ячейки «Subtract», а нижний кружок имеет значение
«0». Это значит, “Отнимаем «0» от Size X”. Поэтому там, где “0”, напишите “250” и присоедините пустой правый кружок ячейки «Substract» b
и пункт “Screen X” на ячейке «Draw Material Simple».

Что мы только что сделали? Мы отняли «250» от «Size X». Так работают все ячейки математических равенств, к классу которых и
принадлежит ячейка “Subtract”. От нижнего числа (обращайте внимание на категорию ячейки) к верхнему. Если бы мы написали там 50, мы
вычли бы «50» из параметров «Size X».

Итак, наша монета очень мило смотрится на экране, теперь нужно добавить туда текст. Поэтому обязательно нажмите кнопки Compile и Save
в нашем Blueprint (чтобы сохранить проделанную работу) и возвращайтесь обратно к ячейке “Draw Material Simple”.
Шаг #14 – Протащите курсор вправо от пустого треугольника на правой стороне ячейки “Draw Material Simple” и когда появится “Compact
Blueprint Library” напишите в поле поиска “Draw Text” (вывести текст). Но прежде чем продолжим, нужно сделать еще кое-что

Вернитесь в вкладку Content Browser, внизу вы увидите иконку под названием “View Options” (посмотреть варианты), перед ней будет глаз.
Нажмите туда и перейдите к функции “Show Engine Content” (показать содержание движка). Когда вы это сделаете, возвращайтесь к файлу
HUD_FirstBlood.
Шаг #15 – В разделе Font (шрифты), выбираем шрифт “RobotoDistanceField” (если вы не установили параметр “Show Engine Content”, вы не
увидите этот шрифт).

Шаг #16 – также, как мы делали ранее, устанавливаем параметры, как показано на скриншоте:

- Target (цель): оставьте как есть (self)

- Text (текст): пишем маленькую букву “x”

- Text Colour (цвет текста): устанавливаем белый (White)

- Screen X: оставьте тот параметр, который был раньше (0.0)

- Screen Y: Устанавливаем “120”

- Font(шрифт): Вы уже изменили его на “RobotoDistanceField”

- Scale(шкала): 2.5

- Scale Position (позиция шкалы): оставляем неотмеченным

Шаг #17 – Выделите рамкой ячейки “Size X”, переходный элемент “Int to Float” и “Subtract” (Или удерживая Ctrl кликните на эти элементы).
Когда выделите, скопируйте и вставьте их, нажав Ctrl + W. Перетащите только что созданные ячейки на ячейку “Draw Text” и подсоедините
ячейку «Subtract» к пункту «Screen X» на ячейке «Draw Text».

Прежде чем двигаться дальше, не забудьте сменить значение только что скопированной ячейки substract на “150”, чтобы нашу монету
ничего не закрывало.
Теперь у нас есть монета и значок «х», который будет отделять монету от числа очков. Прежде чем мы установим отображение очков
игрока, мы должны настроить насколько переменных.

Это будут переменные, который понадобятся нам позже, но сейчас мы просто экономим время, занимаясь их установкой.

Шаг #18 – В библиотеке переменных (Variable Library) слева нам нужно создать четыре новых переменных. Вот они:
Когда вы создали 4 переменных (“NewVar”’), кликайте на них по очереди, и в параметрах меняйте имя переменной (“Variable Name”) на:

#1 – BlueMode (голубой режим)

#2 – RedMode (красный режим)

#3 – GreenMode (зеленый режим)

#4 – Score (очки)
Теперь все переменные названы правильно, но они также должны быть настроены правильно.

Переходим в параметры BlueMode (кликнув на переменную в библиотеке переменных). Под параметром «имя переменной» (Variable Name)
находится параметр «тип переменной» (Variable Type). Кликните на выпадающее меню (В нем сейчас должен отображаться тип переменной
«int») и смените его на Bool (Красная).

Повторите эти действия для переменных RedMode и GreenMode.

Что мы только что сделали? – Мы присвоили переменным RedMode, BlueMode и GreenMode тип Bool (логическая переменная), это
значит они могут принимать значения только «да» и «нет». (Переменным Screen X и Y мы ранее присваивали тип “Int” (целое), они могли
принимать значения 0, 1, 2, 3, 4 и т.д.)

Я уже давал описания типов переменных, но повторюсь:

Bool (логическая) – может иметь значения «да» или «нет», может храниться и использоваться снова

Float (переменная с плавающей запятой) – имеет числовое значение (может иметь цифры после запятой), может храниться и
использоваться снова.

Int (целое значение) – имеет числовое значение (цифр после запятой быть не может), используется, чтобы находить что-либо в
списках/рядах.

String (строковая переменная) – текст, который может храниться и использоваться снова.

Array (массив) – массив элементов/целых чисел, может храниться и использоваться снова.

Сейчас нам нужно изменить тип переменной “Score”(очки) на Int. Когда вы это сделаете, нужно просто кликнуть на закрытый глаз рядом с
каждой переменной (смотрите на скриншот, который над этим шагом), и «открыть глаза» каждой из четырех переменных.

Мы это делаем, чтобы Blueprints мог «видеть» эти переменные и редактировать их. Зачем нам это? Я объясню это позже, а теперь…
Step #19 – Выделите ячейку “Draw Text” и ячейки, связанные с пунктом “Screen X” на «Draw Text», удерживая клавишу ctrl и кликая
последовательно на все элементы. Когда переменные “Draw Text”, “Subtract”, “Int to Float” и “Size X” будут выделены, нажмите Ctrl + W, чтобы
скопировать их.

Скопировав, перетащите их в сторону. У вас должна получиться следующая картина:

Копия отличается только одной деталью: Я изменил значение Subtract с 150 на 110 (Чтобы значок «X» не перекрывал число очков).
Сделайте то же самое.

Step #20 – Перетащите только что созданную переменную “Score” в Blueprint и выберите вариант “Get” (А НЕ “Set”), когда появится такая
опция
Step #21 – Перетащите курсор от пустого правого кружка на переменной “Score” вправо и в поле поиска библиотеки введите “String”. Выберите
вариант “To String (Int)”.

Step #22 – Присоедините пустой розовый кружок на ячейке “To String” к пункту “Text” на второй ячейке «Draw Text».

Что мы только что сделали? – Мы только что полностью настроили рабочее табло с очками! Когда игрок будет подбирать монетку,
количество монет будет отображаться на окне HUD. Нам потребуется еще настроить отображение монет, но это сделаем чуть позже, а пока
можете похвалить себя, мы проделали отличную работу. Если вы взглянете на blueprint издалека. Вы увидите, насколько сложным он
выглядит, но как просто его было создать.
Красное окно для красного игрока, голубое окно для голубого игрока!
В окне HUD у нас отображаются теперь монеты и очки, но еще нужно фоновое изображение. Ранее мы создали материал для него, теперь
осталось только настроить, когда и какой материал должен отображаться в окне HUD.

Шаг #1 – В вашем blueprint «HUD_FirstBlood», вернитесь к ячейке “Sequence”, которая находится почти в самом начале.

Шаг #2 – Тащите курсор вправо от треугольной стрелки “Then 0” на ячейке “Sequence”. В поле поиска “Compact Blueprint Library” напишите
“Branch”.
Шаг #3 – Тащите курсор влево, кликнув на красный кружок Condition (условия) на ячейке “Branch” и, когда появится CBL, пишите в поле поиска
“Get Blue”. Выбирайте вариант “Get BlueMode”(установить голубой режим) Это переменная, которую мы создали раньше.

Что мы только что сделали? – Ячейка «Branch» является ячейкой условий. Так как переменная “BlueMode” – логическая (принимает
значения «да” и «нет»), это можно перевести как: “Выполняется ли сейчас действие BlueMode?” И сейчас нам нужно установить порядок
действий, для каждого из двух вариантов.

Шаг #4 – Если BlueMode выполняется, нам нужно, чтобы окно HUD было голубым. Поэтому кликаем на треугольник “True” на ячейке «Branch»
и тащим курсор вправо. Когда появляется “Compact Blueprint Library” пишем в поле поиска “Draw Material Simple”. Это будет наш голубой HUD.
Как вы видите на скриншоте, для пункта “Material” на ячейке “Draw Material Simple” я установил вариант голубого окна HUD (“Mat_HUD”).
Сделайте то же самое.

Нам также необходимо, чтобы материал закрывал весь экран, какого размера бы он ни был. Для этого мы будем использовать переменные
«Size X» и «Size Y», которые мы создали раньше, как раз для того, чтобы настроить размеры материала для HUD. С помощью можно изменить
размеры окна HUD, когда по каким-то причинам поменяется размер игрового поля/экрана.

Шаг #5 – Кликните на переменную “SizeX” в библиотеке переменных “Variable Library” в левой части экрана и перетащите ее в Blueprint
(поместите перед ячейкой «Draw Material Simple»). Когда появится вариант “Get или Set”, выбираем “Get”. Сделайте то же самое для “SizeY”.
Шаг #6 – Кликните на пустой кружок на ячейке “SizeX” и присоедините его к пункту “Screen W” на ячейке “Draw Material Simple” (это ширина
экрана). Кликните на пустой кружок на ячейке “SizeY” и присоедините его к “Screen H” на ячейке “Draw Material Simple” (это высота экрана).

Как только вы их соедините, Engine автоматически превратит переменные типа “Ints”(целые) в “Floats”(с запятой) (Как мило с его стороны,
спасибо команде разработчиков)

Вот все, что необходимо было сделать в BlueMode. Результаты в самой игре пока не видны (мы еще не все закончили). Теперь нам нужно
заняться GreenMode и RedMode!

Шаг #7 – При нажатой клавише Ctrl выделите все ячейки, которые мы создали после “Sequence” (“Branch”, “Draw Material Simple”, “SizeX”,
“SizeY” и переходные ячейки), кроме ячейки “BlueMode”. Когда мы выделили все ячейки (кроме “BlueMode”), нажимаем Ctrl + W, чтобы
скопировать их. Перетащите вверх все ячейки, которые мы только что создали.
Шаг #8 – Соедините пустой треугольник рядом с пунктом “False” на первой ячейке “Branch” и пустой треугольник на левой стороне второй
ячейки «Branch».

Шаг #9 – В пункте Material мы установили значение “Mat_HUD”, в скопированной версии нам нужно в этом пункте выбрать файл с вторым
изображением для HUD. Поэтому во второй ячейке “Draw Material Simple” нажимаем на выпадающее меню рядом с пунктом “Material” и ищем
“Mat_HUD2”.

Шаг #10 – Во второй ячейке “Branch” условия также еще не заданы. Исправим это (иначе Blueprint будет постоянно спрашивать, какое из
условия применять и зависнет). Из библиотеки переменных (Variable Library) в левой части экрана перетаскиваем в Blueprint переменную
“RedMode”, помещаем ее рядом с второй ячейкой “Branch” и выбираем “Get” (не “Set”), когда будет предложена эта опция. Когда переменная
окажется в Blueprint, просто присоедините ее к пункту “Condition” второй ячейки Branch.

Шаг #11 – Мы закончили с переменной “RedMode”, теперь нужно еще раз скопировать ячейку “Branch” и другие элементы, но это будет в
последний раз.

Поэтому выбираем поочередно элементы “Branch”, “Draw Material Simple”, “SizeX”, “SizeY” и переходные элементы, зажимая Ctrl.

Когда вы выделите все элементы, скопируйте их, нажав Ctrl + W.


Скопированные элементы перетащите чуть выше. Сейчас мы внесем некоторые изменения для материала “Green”

Шаг #12 – Также, как мы делали до этого, соедините пустой треугольник рядом с пунктом “False” на второй ячейке “Branch” и пустой
треугольник на левой стороне третьей ячейки «Branch».

(Обратите внимание, на картинке я пропустил и не скопировал ячейку «Size Y», верхний переходный элемент «Int to Float» не доделан. Копирование любой из двух ячеек «SizeY», находящейся
ниже, исправит положение. Соедините ее с пустым кружком Int cо значением «0» внутри – и все будет работать.)

Шаг #13 – Как мы делали раньше, в нашей третьей ячейке “Draw Material Simple” меняем значение Material на Mat_HUD3” (вместо
“Mat_HUD2”). Также мы должны добавить условия к ячейке “GreenMode”.

Попробуйте сейчас сделать это без объяснений.


Это очень легко, и вы сможете применить на практике знания, полученные в этой книге. Если возникнут затруднения, вернитесь на несколько
шагов назад и посмотрите, как мы действовали с другими переменными.

Шаг #14 – Чтобы окно HUD всегда было на нашем экране, перетаскиваем курсор вправо от пункта “False” на третьей ячейке “Branch”, и в
появившейся “Compact Blueprint Library” набираем в поле поиска “Set Blue”, затем выбираем пункт “Set BlueMode”.

Шаг #15 – Кликаем на маленький квадратик в ячейке “Set BlueMode”, который не отмечен, и ставим там галочку. Теперь вариант “Set
BlueMode” будет считаться положительным исходом.

Теперь посмотрим на Blueprint:


Посмотрите, как запутано все выглядит, но как легко было пошагово выполнять действия. Мы закончили с HUD, теперь осталось настроить
несколько особых игровых событий, чтобы окно HUD могло изменяться.

Вы проделали великолепную работу, молодцы! Не забудьте сохранить и скомпилировать.

Игрок сталкивается с HUD…!


Теперь, когда мы установили HUD, нам нужно иметь возможность управлять им из blueprint персонажа (шаблонный blueprint персонажа из
шаблонов проекта).

Если вы не пользуетесь шаблонами проекта, возьмите blueprint персонажа, который вы сделали.

Для начала нам нужно настроить Character blueprint, чтобы управлять не кучей персонажей, а одним. Не волнуйтесь, у каждого персонажа
будут свои уникальные параметры.

Для этих целей используем шаблонный персонаж Unreal Engine 4.

Что мы делаем сначала:

Шаг #1 – Открываем “MyCharacter” blueprint. Вы можете сделать это через вкладку Content Browser, кликнув там на папку Game. Затем в поле
поиска введите “MyCharacter”.

Если вкладка “Graph” не загрузится автоматически, как и всегда используйте верхнюю панель навигации. Если вы попали во вкладку
“Component” (Компоненты) или “Defaults” (шаблоны), вы в неправильном месте!

Вот, что нам нужно добавить в MyCharacter Blueprint:


Это выглядит немного пугающе, но, как мы убеждаемся снова и снова, в Blueprint это только видимость, лучше перейдем к действиям, и вы
поймете, какие шаги нужно сделать.

Первая задача заключается в том, чтобы настроить “MyCharacter” blueprint так, чтобы материал мэша (персонаж игрока) мог легко меняться
и модифицироваться. Для этого мы должны ступить на неизведанную территорию (или скорее на ту территорию, на которую мы не ступали
в этой книге).

Шаг #2 – Если вы посмотрите на вкладку Event graph в “MyCharacter” Blueprint прямо над рабочей областью, вы увидите вкладку, которая еще
не открыта, она называется “Construction Script”(сценарий конструкции).
Если вы не понимаете, где она находится, она вот здесь:

Когда найдете вкладку “Construction Script”, кликните ее и откроется “Construction Script” Blueprint.

Что такое “Construction Script?” – У каждого класса Blueprint есть «Contruction Script». Если говорить вкратце, в “Construction Script” вы можете
делать предварительные настройки всего, что происходит в игре. Также вы можете использовать его для задач редактирования. (создания
процедур/алгоритмов и т.д). Мы вернемся к деталям чуть позже!

В нашем примере, мы установим такие настройки, что материал на нашем игроке должен будет быть меняться, причем так быстро, как это
возможно. Для этого мы и используем «Construction Script».

Шаг #3 – Когда вы зайдете в «Construction Script», вы увидите фиолетовую ячейку, которая так и называется - “Construction Script”. Это базовая
ячейка, от нее все и будет ответвляться.

От пустого треугольника на ячейке “Construction Script” перетащите курсор вправо и в появившемся в поле поиска пишем “Dynamic” и
выбираем вариант “Create Dynamic Material Instance”.(создать динамический образец материала).

Шаг #4 – В ячейке “Create Dynamic Material Instance” слева есть пустой, светло-голубой кружок “Target” (цель). Мы используем ее, чтобы
изменить материал для персонажа игрока.
Поэтом кликаем на пустой кружок рядом с “Target” и тащим курсор влево. В появившейся Compact Blueprint Library пишем в поле поиска “Mesh”
и выбираем вариант “Get Mesh”.

Что мы только что сделали? – Посмотрите на скриншот. Благодаря ячейке “Construction Script”, Blueprint настроен так, что материал для
мэша [его расположение отмечено пунктом «Element Index 0» - это то место, где хранится вся информация об материале, связанного с
шаблоном персонажа], может меняться в игре.

Сейчас нам нужно присвоить ячейке статус переменной, чтобы мы могли пользоваться ей в основном Blueprint.
Step #5 – Тащим курсор вправо от пустого кружка “Return Value” на ячейке “Create Dynamic Material Instance”. Когда появится CBL в поле
поиска ищем “Promote to Variable” (повысить ранг до переменной). В библиотеке переменных (Variable Library) в левой части экрана кликаем
на новую переменную (“NewVar”) и меняем имя переменной на “characterMat”.

Это все, что нам нужно сделать в «Construction Script». С помощью него мы настроили Blueprint так, чтобы можно было изменять материал.
Для этих целей мы создали переменную, теперь нам нужно вернуться в вкладку “Event Graph” и добавить несколько пунктов в blueprint.

Шаг #1 – Во вкладке «Event Graph» в пустом пространстве нажимаем правой кнопкой мыши (или Ctrl + клик) и пишем: «Custom Event». Когда
появится выбор вариантов, выбираем “Custom Event…” и имя нашего Custom Event: “Red”.

Шаг #2 – Повторите шаг #1 для Custom Event под названием “Green”, а затем для “Blue”.
Теперь настроим активацию HUD.

Шаг #3 – Нам нужно применить к HUD действие «cast». Для этого кликаем правой клавишей мыши (или Ctrl + клик), когда появляется CBL в
поле поиска пишем “Player Controller” (контроллер игрока) и выбираем вариант “Get Player Controller”.
Шаг #4 – Тащим курсор вправо от пустого кружка “Return Value” (параметр возврата) на ячейке “Get Player Controller”. Когда появится Compact
Blueprint Library пишем в поле поиска “Get HUD” и выбираем вариант “Get HUD”.

Шаг #5 – Тащим курсор вправо от пустого кружка “Return Value” на ячейке “Get HUD”, которую мы только что создали. Когда появляется CBL
пишем в поле поиска “Cast” и выбираем “Cast to HUD_FirstBlood”.

Связь с HUD появилась! Помните, как мы создавали логические переменные (со значениями «да» или «нет») и ответвления “Если это
действие выполняется, значит выполнять «что-либо»”? Теперь настало время их использовать!
Шаг #7 – Теперь в HUD нужно установить параметр, что действие “RedMode” - «истина», а остальное – «ложь».

Поэтому тащим курсор вправо от голубого кружка «As HUD First Blood C» на ячейке “Cast”. Когда откроется CBL, пишем в поле поиска
“GreenMode” и выбираем “Set GreenMode” (установить зеленый режим).

Появится ячейка “Set GreenMode” с предустановленным значением “No”. Это параметр означает, даже если “GreenMode” имеет значение
«истина», HUD прочитает это как «ложь»

Шаг #8 –Снова тянем курсор вправо от голубого кружка “As HUD First Blood C” и в этот раз пишем в поле поиска “BlueMode”. Выбираем “Set
BlueMode”.(установить Bluemode)
Шаг #9 – Когда все готово, перетаскиваем ячейку “Set BlueMode” за ячейку “Set Green Mode” и соединяем их белые кружки. Белый кружок с
правой стороны ячейки “Set Blue Mode” нужен, чтобы присоединить потом ячейку “Set RedMode”.

Шаг #10 – Вы должно быть догадались, что будет дальше. Если нет, ничего страшного. Тащим курсор от кружка “As HUD First Blood C” и когда
откроется CBL пишем в ней “RedMode”, затем выбираем “Set RedMode”.

Перетаскиваем только что созданную ячейку в конец цепи ячеек «set» (После ячеек “Set GreenMode” и “Set BlueMode”) и присоединяем ее к
этой цепи.

Нужно присвоить ячейке RedMode значение «истина», поэтому отмечаем пустой квадрат этой ячейки галочкой.
Что мы только что сделали? – Когда вы посмотрите на цепь, которую мы создали (начиная от ячейки “Cast”) вы увидите: Set Green
(установить зеленый) – False(ложь)> Set Blue (установить голубой) – False (ложь)> Set Red (установить красный) – True (истина). Мы
настроили HUD так, чтобы он не отображался ни зеленым, ни голубым, а красным.

Шаг #11 – теперь нам нужно повторить шаги #3 -#10 сначала с переменной GreenMode, затем снова с BlueMode. В конце концов, должен
получиться следующий результат:
Вот крупная версия ячеек “Set”, если вам не видно:
Итак, мы настроили HUD, но не настроили, как его активировать. У нас есть пользовательские события (сustom event). Они связаны друг с
другом («красное» событие говорит, что действие «показывать красное окно HUD» - истина, «зеленое» событие говорит, что действие
«показывать зеленое окно HUD» - истина и т.д.), но нет триггеров для этих событий. Нам нужны события, которые запускают события.

Возьмем под контроль окно HUD и Игрока!


Итак, у нас есть HUD и система, связанная с персонажем, чтобы мы могли изменять HUD, когда необходимо. Нам нужно активировать эти
изменения. Также нужно изменить цвет игрока (который мы настраивали раньше).
В этой части займемся всем сразу.

Шаг #1 – Сейчас я привяжу разные цвета к разным ключам (Num 1, Num 2, Num 3). Если вы хотите использовать контроллер вместо ключей,
используйте кнопки, какие захотите (Например “Gamepad Face Button Top” и.т.д.).

Когда вы определились с ключами, кликните правой кнопкой мыши (или Ctrl + клик) в любом месте “MyCharacter” blueprint. Когда появится
Compact Blueprint Library, введите в поле поиска ваш ключ. Например, я буду использовать цифру «1», поэтому я печатаю в поле поиска 1.
Вы увидите все ключ, который вам нужен в разделе Key Events в CBL. Итак, выбирайте ключ и появится событие с именем ключа, а также с
пунктами в ячейке “Pressed”(нажат) и “Released”(отпущен).
Шаг #2 – Нам нужно запустить событие, которое мы создали. Так как «1» будет отвечать за событие “Red”, мне всего лишь нужно перетащить
вправо курсор от пустого треугольника “Pressed” на ячейке «1» и, когда возникнет CBL, написать в поле поиска “Red” и выбрать эту опцию из
списка. В результате получится следующая картина:

Шаг #3 – С помощью белого кружка в правой верхней части ячейки «Red» мы можем менять цвет персонажа. (персонаж станет другого цвета,
когда изменится HUD).

Мы можем создать ячейку “Set Vector Parameter Value” (установить значение параметра вектора), но эта ячейка нам не поможет. У нее то же
имя, но она исполняет другие функции.
Итак, как же нам создать правильную ячейку?

Просто!

В левой части экрана у вас находится библиотека переменных (“Variable Library”). В библиотеке есть переменная, которая называется
“characterMat” (Мы создали ее с помощью Construction Script).

Перетащите эту переменную из библиотеки в рабочую область Blueprint, и когда вам предложат выбор из опций “Get или Set”, выбирайте Get.
Шаг #4 – Перетащите курсор вправо от голубого кружка на мини-ячейке «characterMat». В поле поиска Compact Blueprint Library напишите
“Set Vector” (установить вектор) и выберите вариант “Set Vector Parameter Value”(установить значение параметра вектора).

Соедините ячейку “Set Vector Parameter Value” с ячейкой “Red”, которую мы создали несколько шагов назад.

Внутри ячейки вы увидите параметр “Value” (значение) который сейчас имеет значение Black (черный). Так как у нас «красное» событие, нам
нужно, чтобы персонаж стал красным.

Поэтому кликайте на черный цвет и появится палитра цветов. Выбираем на ней красный (убедитесь, что он красный, проверив настройки
палитры).
Шаг #5 – Повторите шаги #1 - #4 для других ключей и цветов. (Ищите в поиске событие “Green” вместо красного, и устанавливайте зеленый
цвет. То же самое проделайте для голубого цвета) Сейчас вы должны видеть следующую картину:

Вы можете заметить, что в ячейке “Set Vector Parameter Value”, пункту ParameterName (имя параметра) соответствует значение “DiffuseColor”
(диффузный цвет). Это имя параметра по умолчанию для цвета персонажа в UE4.
Итак, убедитесь, что вы установили это имя параметра в ячейке “Set Vector Parameter Value”, иначе ничего не будет работать!

Теперь, компилируем и сохраняем. Когда вы зайдете в игру, вы увидите, что ваши персонажи и HUD меняют цвет, когда вы нажимаете на
кнопки, которые вы задали.

Отличная работа!

Мы почти закончили, но осталось несколько вещей, который необходимо доделать!

Наделяем персонажа разными “силами”!


Итак, мы установили для каждого персонажа цвет и окно HUD. Теперь нужно дать им разные способности, чтобы игроки хотели меняться друг
с другом силами!

Сейчас я хочу продемонстрировать, как наделить одного из наших цветных игроков (красного) умением прыгать выше, чем другие. Что насчет
остальных двух? Используйте ваши знания Blueprints и воображение, чтобы придумать способности для них.

Объясняю, как дать красному игроку эту способность и сделать ее привилегией только этого персонажа.

Шаг #1 – Заходим в “MyCharacter” blueprint, находим цепь ячеек, в которой мы пользовались ключами, чтобы запустить «красное» событие
(“Red” event). В этой цепи, после ячейки “Set Vector Parameter Value”, кликаем на пустой белый кружок и тащим курсор вправо.

В поле поиска Compact Blueprint Library пишем “Jump” (прыжок) и выбираем вариант “Set Jump Max Hold Time” (задать максимальную высоту
прыжка, задерживать время)

Шаг #2 – Копируем ячейку “Set Jump Max Hold Time”, и вставляем ее дважды. Присоединяем две этих копии к концам цепочек с зеленым
(“Green”) и голубым (“Blue”) ключами.

Шаг #3 – Установите значение ячейки “Set Max Jump Hold Time”, связанной с цепями “Blue” и “Green”, равным «0», а ту, что связана с “Red”,
на «0.5».
Это все, что нам нужно сделать. Пока в других событиях значения параметра сброшены до нуля, выбранный нами герой обладает силой,
которой нет у остальных.
Шаг #4 – Используйте то, что вы узнали, чтобы создать другие способности для зеленого и голубого персонажа.

Когда вы справитесь с заданием, попробуйте изменить уровень и создать свой собственный уровень. Используйте воображение, чтобы
изменить уровень таким способом, чтобы пригодилась сила каждого героя.

Также, когда вы создали уровень, не забудьте добавить ямы, в которые будет падать ваш игрок, когда умирает.

Когда вы сделаете это, можно переходить к следующей главе!

Как убить игрока/ Монеты, монеты, монеты!


Теперь, когда вы изменили уровень и создали свой собственный уровень, нужно запрограммировать, как убить вашего героя.

Чтобы это сделать, нам нужно опять открыть “MyCharacter” blueprint и создать новую переменную.

Шаг #1 – Открываем “MyCharacter” и в библиотеке переменных “Variable Library” создаем новую переменную. Присваиваем ей тип логической
(Bool (она красная)) и называем ее “Allow Input” (разрешить входные данные). Не забудьте кликнуть на глаз рядом с именем этой переменной
в библиотеке переменных, чтобы в других Blueprints мы могли видеть ее.
Шаг #2 – Сохраните и скомпилируйте Blueprint. Когда скомпилируете, нажмите на AllowInput в библиотеке переменных и параметрах (там где
мы задавали имя переменной), прокрутите меню вниз, пока не найдете пункт “Default Value” (значение по умолчанию) и убедитесь, что там
значится “Allow Input”, а в конце стоит галочка. Это значит: в начале игры будут действовать эти параметры.

Шаг #3 - В MyCharacter blueprint, найдите ВСЕ события, кроме Custom Events, которые мы создали (Но включая ключи!).
Теперь для нажимаем на каждое событие, кликаем на нем правой клавишей (или Ctrl + клик) и выбираем вариант “Branch” (Вы можете
копировать и вставлять, чтобы сэкономить время). Затем подсоединяем каждое событие к «Branch», а пункт “True” соединяем с той ячейкой,
с которой событие было соединено изначально. Условием (пункт «condition») для каждой «Branch» должно быть “AllowInput” (Я думаю, вы уже
поняли, как поместить переменные в Blueprint к этому времени).

Пример:

Суммирую: каждый раз, когда вы нажимаете кнопку в игре, мы ожидаем какого-то действия. Но если ваш герой мертв, он не должен двигаться,
поэтому мы должны убрать возможность получать входные данные. Every time there is a button pressed, we want to make sure we have permission
to continue. Naturally, if you’re dead, you shouldn’t be allowed to move around, so we’re going to take away input.

(Убедитесь, что вы добавили это условие к ключам “Num 1, Num 2, Num 3”)
Шаг #4 – Мы добавили условие «Может ли персонаж двигаться?» к каждой ячейке с входными данными в blueprint “MyCharacter”. Теперь
нужно добавить на уровень пусковые элементы. Придумайте место, где персонаж будет умиратьПусть это будет яма или какой-нибудь кол.

Помните как мы создавали элемент «Box» в первом примере? Если мы вернемся к панели “Modes” (режимы), которая в верхней левой части
Unreal Engine, и зайдем в раздел “Volumes” (объем), мы можем прокрутить меню вниз и увидеть пункт, который называется “Trigger Volume”
(инициировать объем). Выберите его и переместите в то место, где герой может умирать.
Шаг #5 – Итак, вы поместили пункт “Trigger Volume” в нужное место, и он выделен. Промотайте вниз его параметры и найдите там пункт “Add
Level Events for Trigger...” (добавить событие на уровне для пускового элемента). Кликните на него и выберите пункт “On Actor Begin Overlap”
(действие начинается при столкновении с героем).

Откроется blueprint для уровня (Level Blueprint).


Шаг #6 – Кликните на голубой кружок “Other Actor” на ячейке “Actor Being Overlap” и перетащите курсор вправо. В поле поиска CBL пишите
“MyCharacter” и выбирайте пункт “Cast to MyCharacter”.

Шаг #7 - Кликните на голубой кружок “As MyCharacter C” на ячейке “MyCharacter” и перетащите курсор вправо. В поле поиска CBL пишите
“Allow Input” и выбирайте пункт “Set Allow Input”.

Шаг #8 – Кликните на пустую белую стрелку на ячейке “Set Allow Input” и перетащите курсор вправо. В поле поиска CBL пишите
“Delay”(отложить) и выбирайте пункт “Delay”.

Шаг #9 – Кликните на пустую белую стрелку справа на ячейке “Delay” и перетащите курсор вправо. В поле поиска CBL пишите “Open
Level”(открыть уровень).

Что мы только что сделали? – Посмотрите на цепочку ячеек. Если персонаж задевает пусковой элемент (Trigger Box), он не может больше
двигаться, и после 0.2 секунды ожидания загружается уровень с именем “None” (отсутствует). Поскольку мы не задали имя для уровня, он
будет перезагружать текущий уровень.

Итак, мы не только создали много персонажей с множеством способностей, но и сделали так называемую «смертельную ловушку» для них.
Нам осталось закончить работу с монетами. И давайте-ка вы сами займетесь этим, без моей помощи.

Да все верно, пора убрать костыли и начать использовать Unreal Engine самостоятельно.

Если вы не понимаете, как сделать монеты, загляните в папку по адресу http://content.kitatusstudios.co.uk. Но если вы внимательно выполняли
все шаги в руководстве, я думаю вы поймете, как справиться с этой задачей.
Проект #2 - Упакован!
Вы сделали это, чемпионы! Вы не только научились создавать порталы, как в примере #1, но и справились с кучей разных blueprints в примере
#2, изменяя материалы и окна HUD.

Молодцы!

Как вы могли заметить, к концу проекта #2, я давал вам все меньше картинок и больше свободы действий. Надеюсь, вы справлялись без
моей помощи.

Зачем я так поступал? Чтобы помочь вам приступить к работе с Blueprints без какой-либо помощи! Если вы не справились или чего-то не
поняли, не стесняйтесь написать мне на почту, и я помогу вам!

Вот она: contact@kitatusstudios.co.uk

Я надеюсь, вам понравились примеры, я всегда рад также взглянуть на ваши результаты, на то, какими способностями вы наделили героев
и как выглядят ваш уровни.

Конец книги #1
Мы сделали это! Мы действительно это сделали! И я надеюсь, что вы обучились крутым приемчикам, и теперь можете самостоятельно
работать с Blueprints.

Я надеюсь книга вам понравилась, и, как я говорил ранее, если у вас есть вопросы, проблемы, или вы просто хотите поделиться со мной
результатами работы, пишите мне на почту: contact@kitatusstudios.co.uk

Спасибо вам за то, что вы прочитали эту книгу, следите за новостями о выходе второй книги! Там я коснусь таких моментов, как AI и Multiplayer!

- Ryan Shah, Ведущий проектов @ Kitatus Studios