Krististudio.ru

Онлайн образование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Unity 2d уроки c

Unity для 2D

Большинство разработчиков 2D создают, запускают свою игру и получают прибыль с помощью платформы Unity. Узнайте, что она предлагает, и как вы можете извлечь из этого выгоду.

Сообщество, инструменты, ресурсы

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

Множество ресурсов

Документация, обучающие материалы, форумы и курсы

Крупнейший магазин ресурсов и инструментов

Тысячи ресурсов, ускоряющие разработку

Поддержка от ведущих игровых студий

Вдохновляйтесь, учитесь, нанимайте или находите работу

Поддержка 2D/3D

Упрощает процесс разработки в 2D, 3D или в их сочетании

Богатый функционал,

Инструменты для работы со сценами, анимацией, системами частиц и звуком

Подстраивается

Подстраивается под особенности рабочего процесса и ваши предпочтения

Нативная высокая производительность и графика

Для мобильных устройств с поддержкой Metal и Vulkan

Оптимизируйте доход и поддерживайте интерес пользователей

Благодаря встроенным IAP, рекламной сети и средствам аналитики в реальном времени

Расширяйте аудиторию на всех платформах

Простая разработка и издание на всех крупнейших и развивающихся мобильных платформах

Исследуйте новые возможности

Портируйте самые успешные мобильные игры на ПК, консоли или мобильные VR-устройства

  • Полный контроль над размером файлов
  • Работайте в любимом и хорошо знакомом вам редакторе
  • Непревзойденная производительность и масштабируемость

Успешные создатели 2D рассказывают о том, как их разноплановая команда любит работать с Unity и почему они не могут даже представить переход на другую платформу.

Успешные разработчики 2D-игр полагаются на Unity

Свет, камера, приключение

Игра Forgotton Anne — это поистине амбициозный проект. Она объединяет в себе 500-страничный сценарий, оригинальный саундтрек, исполненный Датским филармоническим оркестром, и анимации уровня работ студии Ghibli, созданные командой выходцев из мультипликационной индустрии. Узнайте, как ThroughLine Games использовали Unity, чтобы создать один из самых высококачественных и кинематографичных приключенческих 2D-платформеров.

После смерти все становится только лучше

Узнайте, как Unity помогла студии из трех человек создать увлекательный двухмерный платформер с 93 уровнями, 15 анимационными сценами и 3 режимами сложности, который завоевал сердца игроков и привлек внимание инвесторов.

Свобода для экспериментов

Узнайте, как гибкость и богатый инструментарий Unity помог инди-разработчику Стю Денману воплотить свою идею в гипнотизирующую и увлекательную игру более чем со 160 уровнями.

Двухмерная ретро-игра для VR

У Аны Рибейро была идея создать ретро-игру в стиле GameBoy для современной платформы VR. Узнайте, как с Unity ей удалось решить технические задачи, подготовить продукт к выпуску и оптимизировать его.

Как собственные инструменты редактора помогли сэкономить время

Узнайте, как с Unity команде из 14 разработчиков различного профиля, живущих в разных уголках планеты, удалось объединить усилия и создать интересный сюжет с ярким художественным оформлением и разработать увлекательный игровой процесс для великолепной двухмерной игры в жанре hack-and-slash.

Маленькая команда, большие амбиции

С помощью Unity программист-самоучка Мауро Фанелли и его единомышленник, художник Андреа Геллато, смогли создать эту невероятно интересную игру с прекрасной векторной графикой, нарисованной от руки. Узнайте об этом подробнее.

Неожиданный поворот в 2,5D

В этом необычном платформере Zoink реализовали инновационную физику, которая позволяет игроку переключаться межу двумя параллельными мирами. Узнайте, как они этого добились.

Hearthstone вывела всеми любимую и получившую широкое признание вселенную Warcraft на мобильные платформы. Разработчики перешли с движка собственной разработки на Unity, что позволило им быстрее адаптироваться к ускоренному графику разработки и добиться успеха со своей первой мобильной игрой.

Скрупулезная проработка графики

Cuphead — это однопользовательский / кооперативный платформер жанра run-and-gun, вдохновленный мультфильмами 1930-х годов, нарисованный вручную и озвученный оригинальными джазовыми композициями.

Загадочный и глубокий мир

Главная сила Night in the Woods в проработке персонажей и диалогов, а также стильной двумерной графике. Это интерактивное повествование начинается в городке под названием Possum Springs и помещает игрока в мир экзистенциальных и по-темному комичных историй.

Проект появился в рамках геймджема, но потом SFB Games совместно с Nintendo перенесли его на Unity и выпустили для Nintendo Switch. Эта головоломка рассчитана на совместную игру и решение простых (но только на первый взгляд!) задач и приносит невероятное удовольствие игрокам.

Управляем природой

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

2D-инструмент, меняющий процесс создания уровней

Tilemap и другие инструменты помогли двум разработчикам из разных стран в свое свободное время создать удивительный 2D-платформер, в котором все — не то, чем кажется. Узнайте, как они этого добились.

От независимых разработчиков до больших студий — Unity используют по всему миру для создания уникальных игр и контента.

Студии, стоящие за шедеврами вроде Hearthstone и Hitman Go, рассказывают о переходе на Unity, в том числе о:

  • влиянии на рабочий процесс;
  • технических рекомендациях;
  • окупаемости и выгоде;
  • внедрении.

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

Разработка 2D игры на Unity (1/5) «Знакомство с редактором»

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

А создавать мы, собственно, будем упрощённую копию игры «Электроника». Это та самая советская игра, в которой волк из мультфильма «Ну погоди» ловит яйца.

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

1 — Игровой движок Unity. Это два в одном. И движок и визуальный редактор.
Скачать Unity можно бесплатно, на официальном сайте unity3d.com.
2 — Любой редактор растровой графики, поддерживающий альфа каналы. То есть позволяющий создавать прозрачное изображение. В моём случае это Photoshop.
3 — Визуальная среда разработки, поддерживающая язык C#. По факту, можно кодить и в блокноте. Но визуальный редактор сильно ускоряет процесс. Так, как он имеет подсветку синтаксиса, подсказки, а возможно даже и проверку валидности написанного нами кода. Я пользуюсь Visual Studio. По умолчанию с юнити поставляется Mono Develop.

Всё скачали? Поставили? Отлично!

Давайте посмотрим, чем нам ещё может быть полезен сайт unity3d.com.

1 — Обучающие материалы (unity3d.com/ru/learn/tutorials).
В этом разделе вы можете найти множество видео-уроков с примерами кода, разделённые на различные категории. Полностью изучив этот раздел, вы уже сможете создать что нибудь интересная. Но есть и минус — большинство материалов на английском.
2 — Руководство по движку ( http://docs.unity3d.com/ru/current/Manual/ ).
Практически полностью русифицированный раздел, в котором можно найти ответы на большинство возникающих вопросов. И не только у новичков. Но кому я это рассказываю? Настоящие кулхацкеры и гамедевелоперы не читают документацию =)
3 — API скриптов ( http://docs.unity3d.com/ru/current/ScriptReference/ ).
А вот этот раздел я всё таки советую добавить в закладки. Когда вы поймёте основы скриптинга в Unity и поймёте, по какому принципу можно обращаться к объектам и свойствам, вам можно будет не мучать гугл глупыми вопросами, а сразу идти и курить мануалы на оф. сайте. Так будет проще, ибо гугл не содержит ответов на действительно серьёзные вопросы.

С этим разобрались. Давайте запустим редактор.

Для начала, давайте узнаем, с чем нам придётся работать. На картинке выше — окно редактора Unity, пятой версии. Прошу заметить, что стандартный вид данного окна — отличается от того, что вы видите у меня. Просто потому, что мне так удобнее. Для удобства повествования я выделил в редакторе пять областей. И стрелочкой указал на ещё одно важное место. Давайте посмотрим, что есть что:

1 — Окно иерархии (hierarchy). В этом окне будут размещаться все те элементы, которые вы поместите на сцену. Каждый из этих элементов будет являться 3D объектом и иметь свое положение в пространстве вашей игры.
2 — Окно сцены (scene) и окно игры (game). Именно тут вы сможете рассмотреть создаваемое вами игровое пространство. Отличаются они тем, что по окну сцены вы можете свободно перемещаться и изменять вид (с этим сильно помогут стрелочки, что находятся прямо под моей дойкой). А в окне Game, вы видите игру так, как будет её видеть игрок.
Сейчас в этом окне у меня расположена сцена из стрелялки, сделанная в сеттинге «Марио». Я снимаю видео-уроки по её созданию. Да, квадратно, да не красиво. Это обучающий материал)

Читать еще:  Уроки дефиле видео

3 — Окно проекта (project). Тут будут располагаться все исходники нашего проекта. Это окно, по своему содержанию, полностью соответствует папке «Assets», в корневой директории вашего проекта. А это значит, что все новые файлы вы можете добавлять и туда, и туда.

4 — Инспектор (inspector). В этом окне отображаются все свойства выбранного элемента.
5 — Консоль (console). В этом окне будут отображаться все ошибки, а так же лог, если мы вдруг будем что-то в коде дебажить. Теоретически — это окно можно не держать открытым постоянно. Но я программист, поэтому этим окошком пользуюсь всегда.
Там же, во вкладках, у меня расположены окна анимаций (animator и animation). В этих окошках мы будем анимировать объекты. Но в этой серии уроков анимации мы не коснёмся.

6 — Кнопки воспроизведения проекта. Ражимаем «Play» и можем прямо в окошке «Game» поиграть в нашу игру.

На этом первый урок окончен. На следующем мы с вами подготовим исходники для проекта и соберём нашу сцену. Подписывайтесь, чтобы не пропустить! 😉

Туториал 4: 2Д платформер (для новичков). Часть 1.

Введение:

1. Шаг

Запустите Unity и создайте новый 2D-проект.

2. Шаг

3. Шаг

4. Шаг

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour <

//переменная для скорости движения
public float speed;
//ссылочная переменная для компонента Rigidbody2D
Rigidbody2D rb;

void Start () <
//делаем ссылку на Rigidbody2D
rb = GetComponent ();
>

void FixedUpdate () <
//декларация переменной с её инициализацией значением полученным с горизонтальной оси (значение лежит в области между -1 и 1)
float x = Input.GetAxis ( «Horizontal» );
//декларация локального вектора и инициализация посчитанным значением
//x: значение от InputManager * speed
//y: принять текущее значение, мы не будем его менять, из-за использования силы тяжести
//z: должно быть равно нулю, нам не нужно движение по оси Z
Vector3 move = new Vector3 (x * speed, rb.velocity.y, 0f );
//Изменить скорость игрока на вычисленный вектор
rb.velocity = move;
>
>

5. Step

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour <

//в инспекторе мы можем выбрать, какие слои будут землёй
public LayerMask whatIsGround;
//позиция для проверки касания земли
public Transform groundCheck;
//переменная, которая будет true, если крыса находится на земле
public bool isGrounded;
//значение величины силы
public float jumpForce;
//переменная для скорости движения
public float speed;
//ссылочная переменная для компонента Rigidbody2D
Rigidbody2D rb;

void Start () <
//делаем ссылку на Rigidbody2D
rb = GetComponent ();
>

//я буду использовать Update() для более точного определения прыжка
void Update () <
//проверка, нажат-ли прыжок и находится-ли крыса на земле
if ( Input .GetButtonDown ( «Jump» ) && isGrounded) <
//применяем силу на Rigidbody2D вдоль оси Y для прыжка
rb.AddForce ( Vector2 .up * jumpForce, ForceMode2D .Impulse);
//переключаем переменную, чтобы предотвратить следующий прыжок, или мы могли бы снова прыгнуть (до того, как isGrounded будет переключена в FixedUpdate ())
isGrounded = false;
>
>

void FixedUpdate () <
//изменяем переменную, зависящую от результата Physics2D.OverlapPoint
isGrounded = Physics2D .OverlapPoint (groundCheck.position, whatIsGround);
//декларация переменной с её инициализацией значением полученным с горизонтальной оси (значение лежит в области между -1 и 1)
float x = Input.GetAxis ( «Horizontal» );
//декларация локального вектора и инициализация посчитанным значением
//x: значение от InputManager * speed
//y: принять текущее значение, мы не будем его менять, из-за использования силы тяжести
//z: должно быть равно нулю, нам не нужно движение по оси Z
Vector3 move = new Vector3 (x * speed, rb.velocity.y, 0f );
//Изменить скорость игрока на вычисленный вектор
rb.velocity = move;
>
>

6. Step

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour <

//в инспекторе мы можем выбрать, какие слои будут землёй
public LayerMask whatIsGround;
//позиция для проверки касания земли
public Transform groundCheck;
//переменная, которая будет true, если крыса находится на земле
public bool isGrounded;
//значение величины силы
public float jumpForce;
//переменная для скорости движения
public float speed;
//ссылочная переменная для компонента Rigidbody2D
Rigidbody2D rb;
//переменная контроля направления крысы
public bool isLookingLeft;

void Start () <
//делаем ссылку на Rigidbody2D
rb = GetComponent ();
>

//я буду использовать Update() для более точного определения прыжка
void Update () <
//проверка, нажат-ли прыжок и находится-ли крыса на земле
if ( Input .GetButtonDown ( «Jump» ) && isGrounded) <
//применяем силу на Rigidbody2D вдоль оси Y для прыжка
rb.AddForce ( Vector2 .up * jumpForce, ForceMode2D .Impulse);
//sпереключаем переменную, чтобы предотвратить следующий прыжок, или мы могли бы снова прыгнуть (до того, как isGrounded будет переключена в FixedUpdate ())
isGrounded = false;
>
>

void FixedUpdate () <
//изменяем переменную, зависит от результата Physics2D.OverlapPoint
isGrounded = Physics2D .OverlapPoint (groundCheck.position, whatIsGround);
//декларация переменной с её инициализацией значением полученным с горизонтальной оси (значение лежит в области между -1 и 1)
float x = Input.GetAxis ( «Horizontal» );
//декларация локального вектора и инициализация посчитанным значением
//x: значение от InputManager * speed
//: принять текущее значение, мы не будем его менять, из-за использования силы тяжести
//z: должно быть равно нулю, нам не нужно движение по оси Z
Vector3 move = new Vector3 (x * speed, rb.velocity.y, 0f );
//изменить скорость игрока на вычисленный вектор
rb.velocity = move;
//проверка, совпадает ли направление взгляда с направлением движения
if (x 0 && isLookingLeft)
//вызов функции поворота крысы, если проверка совпала
TurnTheRat ();
>

//функция поворота крысы
void TurnTheRat ()
<
//смена переменной показывающей направление взгляда на обратное значение
isLookingLeft = !isLookingLeft;
//поворот крысы через инвертацию размера по оси х
transform.localScale = new Vector3 (transform.localScale.x * -1 , transform.localScale.y, transform.localScale.z);
>

7. Step

8. Шаг

9. Шаг

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAnim : MonoBehaviour <

//ссылочная переменная для аниматора
Animator anim;
//ссылочная переменная для rigidbody2D
Rigidbody2D rb;

void Start () <
//делаем ссылку на аниматор
anim = GetComponent ();
//делаем ссылку на Rigidbody2D
rb = GetComponent ();
>

void Update () <
//меняем параметр speed в Animator. Используем значение скорости по оси х
anim.SetFloat ( «speed» , Mathf .Abs (rb.velocity.x));
>
>

10. Шаг

11. Шаг

12. Шаг

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerAnim : MonoBehaviour <

//ссылочная переменная для аниматора
Animator anim;
//ссылочная переменная для rigidbody2D
Rigidbody2D rb;
//ссылочная переменная для PlayerMove
PlayerMove pm;

void Start () <
//делаем ссылку на Animator
anim = GetComponent ();
//делаем ссылку на Rigidbody2D
rb = GetComponent ();
//делаем ссылку на PlayerMove
pm = GetComponent ();
>

void Update () <
//проверка, находится ли крыса на земле
if (pm.isGrounded) <
//меняем параметр isJumping на false
anim.SetBool ( «isJumping» , false );
//меняем параметр speed. Используем абсолютное значение вектора скорости по х
anim.SetFloat ( «speed» , Mathf .Abs (rb.velocity.x));
// если крыса не на земле
> else <
//меняем параметр speed на 0
anim.SetFloat ( «speed» , 0 );
//меняем параметр isJumping на true
anim.SetBool ( «isJumping» , true );
>
>

13. Step

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerSound : MonoBehaviour <

//ссылочная переменная для звукового файла
public AudioClip footsteps;

//публичная функция, получим доступ к ней из аниматора
public void FootStepsAudio () <
//воспроизвести заданный звук на позиции крысы
AudioSource .PlayClipAtPoint (footsteps, transform.position);
>
>

14. Шаг

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

Читать еще:  Видео урок нанесение гель лака под кутикулу

public class PlayerSound : MonoBehaviour <

//ссылочная переменная для аудио-файла
public AudioClip footsteps;

//публичная функция, получим доступ к ней из аниматора
public void FootStepsAudio () <
//воспроизвести заданный звук на позиции крысы
AudioSource .PlayClipAtPoint (footsteps, transform.position);
>

//запустится если было касание другого Collider2D
void OnCollisionEnter2D ( Collision2D coll) <
//проверка тэга на тэг «Ground»
if (coll.gameObject.tag == «Ground» ) <
//воспроизвести заданный звук на позиции крысы
AudioSource .PlayClipAtPoint (footsteps, transform.position);
>
>

15. Шаг

Выберите Ground в иерархии. Создайте prefab Ground (перетащите объект в Assets). Поместите prefab Ground в сцену, как следующую платформу.

Выберите Main Camera и сделайте её дочерним объектом Rat (перетащите Main Camera на Rat). Камера будет следовать за крысой.

Можете изменить X-position камеры на 0, чтобы убрать рывки при повороте.
Я думаю, этого достаточно для первой части. Надеюсь, что вторая часть будет готова в мае-июне (у меня сейчас мало времени).

Введение в программирование C# на Unity

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

Unity поддерживает следующие языки программирования: C# и Javascript. Языки C# и Javascript считаются одними из самых популярных среди программистов. На C# пишутся программы для компьютера, веб приложения, а Javascript активно используется для создания интернет-страниц. В нашем случае:

Установка среды разработки

Чтобы писать скрипты, необходим редактор кода. В комплекте с Unity идет MonoDevelop, так что его не требуется устанавливать отдельно. Другой вариант — использовать Visual Studio — мы рекомендуем ее. Сменить среду разработки можно в настройках: Edit → Preferences, а затем выбери панель External Tools.

Вывод сообщения в консоль Unity

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

Консоль (англ. — Console) – это панель в Unity, которая отображает ошибки в коде (отображаются красным значком), предупреждения (отображается желтым значком) и позволяет выводить справочную информацию (белый значок). По умолчанию эта панель отображается в нижней части программы в закладке Console. Если эта панель не отображается на экране, то в главном меню выбери Window → Console.

Консоль Unity

Чтобы создать скрипт выбери Assets → Create → C# Script. Имя скрипта должно быть обязательно на английском и начинаться с большой буквы. Открой созданный скрипт и напиши:

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

Код, который должен вызываться один раз при старте программы, ты можешь написать внутри функции Start(), как в примере выше.

Код, который должен вызываться каждый кадр, ты можешь написать внутри функции Update().

Переменные

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

Переменная — поименованная область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы. Переменные хранят в себе информацию разного типа, эти данные называют значением переменной. Для каждого типа данных есть свой тип переменной. Например:

  1. Целочисленные: int (от –2 147 483 648 до 2 147 483 647), long (от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807).
  2. Символы и строки: char (элемент в кодировке UTF-16), string (последовательность элементов в кодировке UTF-16).
  3. С плавающей запятой (дробные): float (от 1,5 × 10–45 до 3,4 × 1038, с точностью до 7 цифр), double (от 5,0 × 10–324 до 1,7 × 10308, с точностью до 15 цифр).
  4. Логические: bool (значение true или false).

Инициализация переменной

Все переменные в C# должны быть объявлены (инициализированы) до их применения. Например:

Задать значение переменной можно, в частности, с помощью оператора присваивания — знак «=». Кроме того, при объявлении переменной можно сразу задать ее значение. Например:

Переменные численных типов можно складывать, вычитать, умножать и делить:

+ — операция сложения;

— операция вычитания;

* — операция умножения;

/ — операция деления.

А вот так сумму чисел можно вывести в консоль:

Счетчик времени с помощью Time.deltaTime

Практически во всех играх требуется знать сколько времени прошло с момента запуска игры (пример: игры на время). Но в Unity мы можем узнать только сколько прошло времени между кадрами (напоминаю, что игра – это набор кадров, которые быстро меняются. В одну секунду количество таких кадров может достигать 60 и больше).

Чтобы узнать сколько времени прошло между кадрами — используется Time.deltaTime.

Чтобы сделать дробное число целым, ставим перед ним (int).

Позиция объекта

Координаты объекта хранятся в компоненте Transform, свойство — position. Каждая координата имеет тип float. Вот так можно выводить координаты объекта в консоль:

Как сделать свою видеоигру

В середине февраля создатели Unity выпустили 2D-kit — необычное приложение, созданное для всех начинающих игроделов. С его помощью любой желающий может собрать платформер, не утруждаясь долгим написанием кода. Программный код, модели и анимации подготовили разработчики, а вам остается только вникнуть в манипуляции с ними и создать ту игру, о которой вы всегда мечтали (если это, конечно, двухмерный платформер). Мы протестировали 2D-kit, создали собственный уровень и на его примере рассказываем, как быстро освоится с движком и выпустить первую игру.

С чего начать

Если вы ни разу не запускали Unity или, по каким-то причинам, слышите о нем впервые, кратко поясним основы интерфейса. Все окна и вкладки вы можете свободно передвигать в любое удобное для вас место, но изначально они расположены следующим образом: в левой части находится столбик иерархии, который показывает все объекты, находящиеся в сцене; сама сцена располагается в центре, а справа от нее окно инспектора показывает свойства выделенного объекта. Внизу вы увидите меню проекта и материалы, которые ему присвоены. Теперь разберемся с тем, чем отличается 2D-kit от обычного запуска Unity.

В стартовом меню движка у вас будет выбор: начать новый проект или перейти во вкладку обучения, а там запустить загруженный 2D-kit. Выбрав второй вариант, вы увидите вместо пустого полотна материалы игры и сможете творить буквально с двух кликов. Сперва необходимо создать сцену: найдите сверху Kit Tools и выберете вкладку Create New Scene.

Сцена создана, в иерархии сразу выстроилось множество непонятных объектов, но главное — появилась героиня, которая будет представлять игрока в будущем. Управление ею настроено заранее, так что об этом беспокоиться не стоит. Пока важно понять, что набор строчек под заголовком GameUtilities в иерархии должен перемещаться вместе с главной героиней, чтобы на старте не возникло проблем с управлением. Вот мы и подобрались к самому насущному: как создавать уровни?

В меню Window есть вкладка The Palette — это окно кисти, которое позволяет рисовать фундамент. Чтобы перейти к выбору нужной текстуры нажмите на TilesetRockWaterBlockers и выберете TilesetGamekit. Теперь у вас есть два вида кисти: трава и камень, имитирующий инопланетные постройки. Совмещать их, к сожалению, нельзя, так что заранее планируйте уровень в одном стиле или маскируйте шов подручными объектами, вроде кислотного озера.

Создание окружения

Теперь, когда вы нарисовали уровень, можно перейти к его наполнению. Для этого нам понадобятся интерактивные объекты, то есть такие предметы, которые будут двигаться сами по себе и реагировать на действия игрока. Они называются Prefabs и хранятся в одноименной папке меню проекта. Открыв ее, вы увидите новый ворох подчиненных папок — это виды предметов, которые вы вольны использовать.

Читать еще:  Полиглот английский урок 9

В первую очередь рекомендуем заглянуть в Interactables — это самый простой вид предметов, которые очень легко располагать и настраивать. Например, там есть «DestructableColumn» — колонна, разрушаемая при ударе жезлом. Мы поставили ее при входе в пещеру. Чтобы добавить ее в свой уровень просто перетащите колонну из папки на сцену. Таким же образом добавляются и другие предметы, такие как «MovingPlatform».

Вы, наверное, заметили, что при добавлении объектов правое окно инспектора сразу заполняется непонятными настройками, а рядом с движущейся платформой еще и путь какой-то красный отметился. Не беспокойтесь, сейчас мы с ними быстро разберемся. На самом деле, большинство иконок, ползунков и цифр вам не пригодится на первом этапе. Главное – заметить кнопочку Add Node в настройках платформы — она добавляет новую точку в пути движения островка. Все точки можно передвигать стрелочками по оси координат. Проблема в том, что изначально платформа двигается по принципу «туда-сюда», а если вы формируете квадрат, то вы, естественно, хотите, чтобы островок двигался по кругу. Для этого в подменю Moving Platform (Script), там же, где находится Add Node, вам нужно выбрать надпись BACK_FORTH, что и означает «туда-сюда», и сменить ее на LOOP, что означает «по кругу».

Теперь у вас есть движущиеся платформы, как в каком-нибудь Mario. Более того, вы можете их вертеть и увеличивать, выбрав в левом верхнем углу нужный маркер. Чтобы вместе с платформой перемещался какой-нибудь предмет, например, шипы, вам необходимо перетащить его прямиком на платформу в списке иерархии. Уже только на основе этого формируется неплохая игра, но мы пойдем еще дальше.

Теперь добавим в нашу сцену нечто посложнее – злющего NPC. Враги находятся в папке Enemies, которая лежит там же, в Prefabs. Неважно, кого вы кинете на уровень: синего или розового монстра, внимательно присмотритесь к его настройкам. Самая первая – Transform — изменяет положение и размер объекта. Вторая – Sprite Renderer — позволяет его отзеркалить в разных координатах; для этого поставьте галочку рядом с X или Y. И уж совсем далеко внизу находится Enemy Behaviour, которая управляет поведением монстра. Важнейшие строчки в этом окне – это View Fov и View Direction. Первая определяет область зрения врага, а вторая ее вращает. Вы также сможете отрегулировать дистанцию взора в строчке View Distance, просто указав нужное число.

Интерактивные объекты

На этом этапе вы способны создать собственный уровень со скрытыми пещерами, летающими островами и разными типами врагов, и все это без единой строчки кода. Пришла пора усложнить собранную сцену более комплексными, связанными друг с другом, объектами. Мы установим дверь, которая будет открываться благодаря кнопке, расположенной в полу или на стене. Для этого нам понадобится дверь, лежащая в уже знакомой нам папке Interactables, но с ней мы ничего делать не будем. Основная работа пойдет над кнопкой PressurePad, которая и должна открывать путь.

Ее расположение может быть любым; нам важна настройка Pressure Pad (Script), которая кроется глубоко внизу инспектора. В ней есть маленькое окошко On Pressed () с плюсиком внизу. Этот плюс добавляет реакцию чего бы то ни было в сцене на нажатие кнопки. Поскольку нам надо, чтобы открывалась дверь, то именно дверь и нужно перетащить из окна иерархии в строку под надписью Runtime Only.

Мы связали между собой кнопку и дверь, но пока не определили, какой будет эта связь. Для того чтобы назначить ее нужно зайти в подменю No Function и в том списке, который выпадет при наведении на Animator, выбрать Play (string). Вуаля! Опробуйте результат, просто нажав на кнопку Play, расположенную над сценой.

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

Связываются точки перехода еще проще, чем дверь с кнопкой. Они находятся в папке Scene Control, которая, как и все прочие папки с объектами, лежит в Prefabs. Там нам понадобится объект TransitionStart, который является точкой перехода. Если вы хотите создать телепорт внутри сцены, то вам понадобится две таких точки, одна из которых обязательно должна быть переименована в TransitionEnd (делается это в верхней строке инспектора).

Наберитесь терпения, потому что сейчас придется плотно поработать с настройками точки отправления, которые называются Transition Point (Script). Первое поле говорит нам о том, какой объект будет переноситься. Поэтому из иерархии в него нужно перетащить героиню (Ellen).

Вторая строка отвечает за тип перехода: внутри зоны или вне – это как перелет внутри страны или за границу. Если вы выбрали внутреннее путешествие, то перетащите в новое поле TransitionEnd — так вы укажите куда произойдет переход. Обычно перемещение происходит автоматически, поэтому следующей строкой стоит надпись On Trigger Enter, но вы можете изменить это по своему желанию, как это сделали мы у корабля. Не забудьте также перетащить Ellen в настройки TransitionEnd, иначе чуда не свершится.

Если вы переходите в другую локацию, то вам сперва нужно выбрать ее, а затем уже точку перехода, потому что на уровне их может быть несколько, и все они помечаются буквами в алфавитном порядке. Кстати, местом назначения в другом уровне служит объект под названием TransitionDestination, который находится там же, в Scene Control. Не перепутайте!

Полезные советы

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

Первый секрет заключен в портале, сверкающем в самом начале локации. Мы не станем раскрывать что внутри, но вы и сами можете разгадать это, если, конечно, попадете в него.

Второй секрет — это оформление. Деревья, трава, столбы, статуи и другие декоративные украшения располагаются в папке Sprites, которая лежит внутри папки Art. В этом нет ничего тайного, но вы можете пополнять библиотеку из магазина Unity или самостоятельно рисуя в Photoshop. Они могут как спрятаться за другими объектами, так и перекрывать их — за это отвечает цифра в строке Order in Layer.

Третий секрет — музыка. Он совсем простой: кидаете свой саундтрек в папку Music, а затем перетаскиваете его в настройки BackgroundMusicPlayer.

И последний секрет — смерть. Если вы строите открытые локации, в которых игрок может запросто упасть со скалы, вам необходимо подготовить для него штраф, а иначе он продолжит бесконечно парить. Лучше всего для этого подходит невидимая смерть. Создайте пустой объект и прикрепите к нему Damager (Script). Растянув его по всей карте, вы получите ту самую невидимую смерть, от которой игрок будет гибнуть, падая с высоты.

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

Скачать движок можно по этой ссылке, а найти к нему более подробную инструкцию на английском языке — по этой. Удачного девелопмента!

Ссылка на основную публикацию
Adblock
detector