Настольная игра на unity. Академия разработки игр Unity - Видеоуроки. Рассматриваем стандартный шаблон скрипта

3. Простейшая игра

Для начала нам желательно создать наиболее простую игру, чтобы быстро пройти все этапы разработки, не отвлекаться на мелкие нюансы, и на практике увидеть, что всё таки это возможно – вручную создать свою игру. Для этой цели в качестве ориентира выберем одну из первых игр в истории – SpaceWar. Это двухмерная стрелялка, где космический корабль летает по космосу и стреляет в другой корабль. Графики минимум, только чистая механика. (Но по графике мы, конечно, можем позволить себе более интересные изображения, чем монохромные пиксели).

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

3.1. Создаем проект

1. После запуска Юнити, в верхнем главном меню выбираем «File -- New Project » (файл – создать проект).

В появившемся окне выбираем место на жестком диске, где сохранить проект. Рекомендуем написать путь к папке как можно короче, например: C:/Project_1 .

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

В нижней части окна выбираем двухмерную игру «Setup defaults for: 2D ».

После этого нажимаем кнопку «Create » (создать).




2. Перед нами открывается окно Юнити, состоящее из нескольких зон. Расположение зон можно сразу же настроить под себя в разделе «View» главного меню, поэтому ориентироваться будем не по сторонам экрана, а по названиям рабочих зон Юнити.


Сразу же оговоримся, что мы будем соблюдать все стандарты разработки программ: четкая иерархия, осмысленные названия переменных, комментарии в программном коде. (Вообще, это не обязательные действия, они несколько увеличивают время разработки, но значительно повышают удобство работы с программой для других людей. Если вы собрались создавать игры в команде с единомышленниками, то вам просто необходимо придерживаться стандартов. Но даже если вы ведете разработку в одиночку, проект может быть настолько большим, что в какой-то момент вы забудете часть кода, и сами не сможете быстро разобраться в нём. Чтобы этого не случалось, везде оставляем комментарии. Стандарты оформления программ помогут вам быстрее разобраться в собственном давно забытом коде).


3. Создадим четкую иерархию проекта, создав папки для каждого вида файлов:

1). В окошке «Project » в его левом верхнем углу нажимаем кнопку «Create ».

2). В появившемся списке выбираем «Folder » (папка). В корневой папке «Assets» появится новая папка.

3). Создаём четыре папки, называем их так:

Prefabs (префабы – массивы объектов),

Scripts (скрипты – программный код),

Sounds (звуки – для звукового сопровождения игровых действий),

Sprites (спрайты – изображения для игровых объектов).

(Созданные папки можно переименовывать и перемещать в любое время с помощью перетаскивания элементов в окошке «Project»).

4). Вот так должен выглядеть конечный результат нашей операции:



3.2. Создаём игровую сцену

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


Создаём спрайт:

1. Открываем программу Paint. В свойствах изображения изменяем размер на «100 х 75». Рисуем корабль из простейших фигур, закрашиваем, вокруг корабля оставляем белый цвет. Сохраняем файл под именем «».

2. Созданный файл открываем в программе «Gimp». Слева выбираем инструмент «волшебная палочка», на изображении выбираем белый участок вокруг корабля. В главном меню на вкладке «Изображение» выбираем последнюю строчку «Color to alfa-cannel». После этого вокруг корабля будет прозрачный цвет. Если на изображении ещё остались белые участки, повторяем действия, пока не обесцветим всё ненужное. Сохраняем файл. Запоминаем папку, где лежит созданный файл.

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


Изображения, необходимые для создания игры
Корабль
Космос
Пришелец
Выстрел

Создаём игровой объект:

1. В другом окне находим на компьютере файл изображения, который мы только что создали, перетаскиваем его в окно Юнити в зону «Project » на папку «Sprites ». Файл подгрузится в папку. После этого выделяем загруженный файл, в окне «Inspector » в строчке «Texture Type » выбираем значение «Sprite (2D and UI) ». Внизу нажимаем кнопку «Apply » (применить).


(Другой способ добавлять файлы: в зоне «Project» выбираем папку «Sprites», на ней нажимаем правой кнопкой мыши, в появившемся списке выбираем «Import New Asset», в появившемся окне ищем папку расположения и сам файл изображения).

2. Выбираем загруженный файл в зоне «Project », перетаскиваем его в зону «Scene (тёмно-серая часть рабочего окна Юнити, где есть изображение видеокамеры).

Справа в зоне «Inspector» смотрим на характеристики «Transform» - это координаты нашего объекта в игровом пространстве. После перетаскивания объект установился неровно (в координатах X и Y указаны не целые, а дробные числа). Нажимаем правой кнопкой мыши по меню «Transform », в появившемся списке выбираем «Reset Position ». После этого изображение встанет ровно по центру мира (X=0, Y=0).


Создаём фон:

1. Рисуем изображение звездного пространства – тёмный фон и несколько звезд. Размер изображения - 100 х 100, формат - .png. Можете использовать готовый файл изображения с нашего сайта.

2. Созданный файл добавляем в окно Юнити в папку «Sprites».

3. Перетаскиваем файл в окно игровой сцены. Как мы видим, новое изображение встало поверх старого, и корабля теперь почти не видно. Unity, да и вообще все редакторы, устроены так, что в них новые элементы ставятся поверх старого, но нам-то нужно, чтобы фон был на заднем плане. Чтобы исправить очередность изображений, выбираем игровой объект с фоном, в окне «Inspector» в свойствах «Transform » вставим значение «Z = 1 ». У изображения корабля должно стоять свойство «Z = 0». Z – это глубина расположения объекта в 2D играх. Чем больше значение Z, тем дальше объект находится от игровой камеры.


4. Другой способ: на сцене выбираем объект фона, в окне «Inspector» смотрим свойства «Sprite Renderer », в строчке «Sorting Layer » нажимаем кнопку и выбираем «Add Sorting Layer ». После этого появится новая строчка с названием слоя «Layer 1», переименовываем его в «Background ». Точно так же создаём ещё два слоя: «Foreground » и «GUI ».

5. Выбираем объект корабля, в окне «Inspector» в строчке «Sorting Layer» выставляем ему слой «Foreground». Выбираем объект фона, выставляем ему «Background». Теперь корабль будет отображаться поверх фона.



Наше фоновое изображение сейчас имеет размер 100 х 100 пикселей. Для фона этого будет мало. Конечно, можно создать много копий этого изображения, и закрыть ими весь игровой экран, но это очень долгий и неэффективный способ. Мы пойдём другим путём: превратим спрайт в текстуру.


6. Выделяем объект фона из списка «Hierarchy » и удаляем его (клавиша «delete»), чтобы убрать фон с игровой сцены. В зоне «Project » выбираем изображение фона, в окне «Inspector » меняем его тип «Texture Type » на «Texture ». В строчке «Wrap Mode» ставим значение «Repeat». Нажимаем кнопку «Apply ». (Сайт сайт)



7. У нас есть текстура, теперь создадим для неё подходящий игровой объект. В верхнем главном меню выбираем строчку «Game Object | Create Other | Cube ». Изменяем имя появившегося объекта на «Background». В свойствах «Transform» изменяем расположение «Position: 0, 0, 1 » и размер «Scale: 100, 100, 1 ».

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

8. В свойствах куба удаляем раздел «Box Collider » (обработчик столкновений). Для этого нажимаем правой кнопкой мыши на разделе, в появившемся меню выбираем строчку «Remove Component ».



9. Наше изображение фона нельзя напрямую поместить в 3D-объект. Для начала изображение нужно преобразовать в материал. В зоне «Project » сверху нажимаем «Create | Material ». Появившийся материал называем «BackgroundMaterial». В свойствах «Shader » нажимаем на выпадающее меню, выбираем «Unlit | Texture ». В правой части свойств кликаем по квадрату с изображением текстуры «Texture box», из появившегося списка выбираем текстуру нашего фона (или же можно просто перетащить сюда файл текстуры из зоны «Project»). В свойстве «Tiling » проставляем значения x = 25 , y = 25 .



10. В зоне «Hierarchy» выбираем объект «Background». В его свойствах, под компонентом «Mesh Renderer » открываем «Materials » и меняем значение «Element 0 » на наш материал «BackgroundMaterial ».


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

3.3. Создаём скрипт

Для того, чтобы заставить игровые объекты двигаться, нам нужны скрипты. Скрипты – это своеобразные логические команды, которые предписывают объектам, как им себя вести в той или иной ситуации. В Unity можно писать скрипты на следующих языках программирования: C#, Boo, UnityScript. Мы будем использовать язык C#, так как он принадлежит к серии самых популярных языков программирования.

(Даже если вы не знаете ни одного языка программирования, то можете просто пошагово повторять все описанные нами действия. Команды языка логичны, и со временем становятся интуитивно понятны. Позже, созданные строчки кода вы сможете использовать и преобразовывать по своему усмотрению, даже не понимая их внутренних механизмов. Главное – начать этим заниматься, а осознание принципов программирования придёт с опытом).


Реализация передвижений игрока

1. В области «Проекта» нажимаем правой кнопкой мыши на папке «Scripts », в выпадающем списке выбираем «Create » - «C# Script ». (Или же можно нажать на кнопке «Create» в верхнем левом углу области, и создать скрипт там). Назовём созданный файл - «PlayerScript ».



2. Делаем двойной клик по файлу скрипта, после этого откроется окно дополнительной программы «MonoDevelop» (это программа из комплекта Unity, предназначенная для написания скриптов).


После запуска «MonoDevelop» видим, что часть программного кода уже создана автоматически. Пока ничего не изменяем, а изучаем то, что появилось в коде по умолчанию.


Рассматриваем стандартный шаблон скрипта

В самом верху видим две строчки:

using UnityEngine;
using System.Collections.Generic;

В программном коде мы должны оперировать различными классами объектов. Описания классов содержатся в специальных библиотеках. Вот эти библиотеки мы и подключаем к нашему коду командой «using».

В библиотеке «UnityEngine» содержатся описания всех стандартных объектов внутри движка Unity (объекты, их свойства, файлы, префабы, система наследования, связи между объектами).

В библиотеке «System.Collections.Generic» содержатся простейшие логические конструкции (классы, списки, перечни, массивы, таблицы, векторы), а так же источники внешних данных для нашей будущей игры (нажатие клавиш клавиатуры, кнопок мыши, свойства экрана).


public class PlayerScript: MonoBehaviour {

Это заголовок созданного нами скрипта. Заметьте, что третье слово «PlayerScript» - это название скрипта, оно соответствует тому, как мы назвали файл «PlayerScript.cs». После двоеточия указан класс нашего скрипта – «MonoBehaviour». Это стандартный класс для всех скриптов Юнити.

После символа «{» начинается перечень команд внутри скрипта. В самой последней строчке скрипт обязательно должен завершится символом «}».


Внутри скрипта видим строчки:

// Use this for initialization

void Update () {

Это две пустые стандартные функции. «void» - это команда вызова функции. «Start» и «Update» - названия функций.

«()» - означает что это процедурная функция, для неё не нужны внешние значения, и она не выдаёт результат, а просто выполняет определенные действия.

«{}» - начальные и конечные границы функций, между этими символами должны содержаться строчки функции, но пока там пусто. Видите, у нас есть границы всего скрипта, а внутри него есть границы двух функций. В особо больших скриптах в глазах начинает рябить от множества символов «{}», и нужно внимательно следить за тем, куда вы вставляете строчки кода.

Перед функциями видим строчки текста, начинающихся с символов «//». Так обозначаются комментарии к программному коду. Эти записи никак не влияют на сам код, но они помогают разобраться в нём. В самом коде нельзя использовать русский язык даже для названия переменных, а вот в комментариях мы можем писать всё что угодно на любом языке.


Изменяем скрипт

3. Строчку «using System.Collections;» изменяем, чтобы получить больше возможностей при разработке. Дописываем подкатегорию «.Generic»:

using System.Collections.Generic ;

4. Функция «Start» выполняется один раз при создании объекта в игре, а функция «Update» повторяется каждое мгновение в процессе игры. «Start» нам не нужна, можем удалить её.


5. Создадим переменные значения, которые нам понадобятся. После строчки «public class PlayerScript: MonoBehaviour {» добавляем следующий текст:

// Изменение скорости перемещения героя
public float playerSpeed = 2.0f;

// Текущая скорость перемещения
private float currentSpeed = 0.0f;

// Создание переменных для кнопок
public List upButton;
public List downButton;
public List leftButton;
public List rightButton;

// Сохранение последнего перемещения
private Vector3 lastMovement = new Vector3();

Рассмотрим, что мы написали. В первой строчке:

«public» - публичный тип переменной (её смогут изменять другие игровые объекты).

«float» - тип значения, хранящегося в переменной, в данном случае – число с дробным значением.

«playerSpeed» - название переменной (можете назвать по другому).

«= 2.0f» - начальное значение, хранящееся в переменной. Дробное число написано в таком формате – число с точкой, а в конце буква «f», чтобы компьютеру было понятно, что это не обычная цифра, а число с дробным значением. Такой тип переменных используется для координат объекта в пространстве.


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

«private» - приватный тип переменной (такую переменную может изменять только сам объект, переменная для внутреннего пользования).

«List» - тип переменной «массив из нескольких значений», в массиве содержатся ссылки на клавиши клавиатуры. «upButton», «downButton»,.. – названия применяемых клавиш.

«Vector3» - тип переменной «вектор в трех измерениях». «new Vector3()» - создание пустого вектора (обязательно для инициализации такого типа переменной).


Подвязываем скрипт к объекту

6. Сохраняем изменения в скрипте. Можем сделать это, нажав комбинацию клавиш «Ctrl + S». Сворачиваем окно «MonoDevelop», возвращаемся на экран Юнити.


7. В «иерархии» выбираем объект корабля. Перетаскиваем файл скрипта в свойства корабля в окно «инспектора». Там появится новое свойство объекта «Player Script (Script)». Здесь мы можем увидеть, что все публичные переменные отображаются в свойствах объекта, и мы можем поменять их прямо отсюда, не возвращаясь к программному коду.



8. Настроим управление нашим кораблём. В свойствах каждой переменной-кнопки «Up Button», «Down Button», «Left Button», «Right Button» в строчке «Size » ставим значение «2 ». После этого появляются два списка «Element 0» и «Element 1», в них выбираем те клавиши, которые будут соответствовать этой переменной. Для «Up Button» это «UpArrow » (клавиша со стрелкой вверх на клавиатуре) и «W ». В итоге мы должны назначить переменным все кнопки-стрелки и клавиши «W, A, S, D », как это показано на рисунке. (Открыв список, на клавиатуре можно нажимать клавишу с первой буквой названия клавиши, чтобы быстро найти её в огромном списке).

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


Пишем функции перемещения объекта

9. Возвращаемся в «MonoDevelop». Внутри функции «Update» прописываем ещё две функции. Размещение функций в «Update» означает, что они будут повторяться вновь и вновь, на протяжении всей игры:

// Update is called once per frame
void Update () {

// Поворот героя к мышке

// Перемещение героя

}

10. Выше мы написали лишь вызов наших функций. Теперь ниже нужно описать, что же собственно будут выполнять эти функции. После символа «}», закрывающего функцию «Update», и перед последним символом «}» добавляем код:

// Поворот героя к мышке
void Rotation() {
// Показываем игроку, где мышка
Vector3 worldPos = Input.mousePosition;
worldPos = Camera.main.ScreenToWorldPoint(worldPos);
// Сохраняем координаты указателя мыши
float dx = this.transform.position.x - worldPos.x;
float dy = this.transform.position.y - worldPos.y;
// Вычисляем угол между объектами «Корабль» и «Указатель»
float angle = Mathf.Atan2(dy, dx) * Mathf.Rad2Deg;
// Трансформируем угол в вектор
Quaternion rot = Quaternion.Euler(new Vector3(0, 0, angle + 90));
// Изменяем поворот героя
this.transform.rotation = rot;
}

11. Описываем функцию движения корабля «Movement»:

// Движение героя к мышке
void Movement() {
// Необходимое движение
Vector3 movement = new Vector3();
// Проверка нажатых клавиш
movement += MoveIfPressed(upButton, Vector3.up);
movement += MoveIfPressed(downButton, Vector3.down);
movement += MoveIfPressed(leftButton, Vector3.left);
movement += MoveIfPressed(rightButton, Vector3.right);
// Если нажато несколько кнопок, обрабатываем это
movement.Normalize();
// Проверка нажатия кнопки
if(movement.magnitude > 0)
{
// После нажатия двигаемся в этом направлении
currentSpeed = playerSpeed;
this.transform.Translate(movement * Time.deltaTime * playerSpeed, Space.World);
lastMovement = movement;
}
else
{
// Если ничего не нажато
this.transform.Translate(lastMovement * Time.deltaTime * currentSpeed, Space.World);
// Замедление со временем
currentSpeed *= 0.9f;
}
}

// Возвращает движение, если нажата кнопка
Vector3 MoveIfPressed(List keyList, Vector3 Movement) {
// Проверяем кнопки из списка
foreach (KeyCode element in keyList)
{
if(Input.GetKey (element))
{
// Если нажато, покидаем функцию
return Movement;
}
}
// Если кнопки не нажаты, то не двигаемся
return Vector3.zero;
}


12. Сохраняем файл скрипта, возвращаемся в окно Юнити, сохраняем сцену (в главном меню нажимаем «File | Save Scene ». Теперь можем запустить нашу игру. На вкладке «Game » нажимаем кнопку «Maximize on Play », чтобы игра запускалась во всё окно Юнити. Нажимаем клавишу «Play » в верхней части экрана для включения игры. (Для отключения игры снова нажимаем по клавише «Play »).



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

Достижение "Почётный читатель сайт"
Понравилась статья? В благодарность можно поставить лайк через любую социальную сеть. Для вас это - один клик, для нас - очередной шаг вверх в рейтинге игровых сайтов.
Достижение "Почётный спонсор сайт"
Для особо щедрых есть возможность перевести деньги на счет сайта. В этом случае вы можете повлиять на выбор новой темы для статьи или прохождения.
money.yandex.ru/to/410011922382680

Unity Game Development Academy: Make 2D & 3D Games

Duration 35:30:04

Unity Game Development Academy: Make 2D & 3D Games - Полный список уроков

Развернуть / Свернуть
  • Урок 1. Unity 3D Course overview 00:07:11
  • 00:06:39
  • 00:06:45
  • Урок 4. Zombie Roller- Your First Unity 3D Game 00:42:02
  • Урок 5. Unity 3D pricing plans 00:03:57
  • Урок 6. How to access community & chat in this Unity 3D course 00:03:04
  • Урок 7. C# variables in Unity 3D 00:12:23
  • Урок 8. C# numbers in Unity 3D 00:20:08
  • Урок 9. C# conditionals in Unity 3D 00:23:06
  • Урок 10. C# arrays & loops in Unity 3D 00:28:07
  • Урок 11. C# functions & methods in Unity 3D 00:29:26
  • Урок 12. Object oriented programming & inheritance in C# 00:23:48
  • Урок 13. Intro to Haunted Zombie Rush 00:01:12
  • Урок 14. 3D Game Assets for your games in Unity 00:03:28
  • Урок 15. Unity 3D interface overview 00:09:13
  • Урок 16. Project creation & importing assets into Unity 3D 00:05:23
  • Урок 17. Working with lighting & materials in Unity 3D 00:14:56
  • Урок 18. Altering shaders in Unity 3D 00:07:05
  • Урок 19. Switching build platforms in Unity 3D 00:10:20
  • Урок 20. Moving objects in Unity 3D 00:22:54
  • Урок 21. Coroutines & wait times in Unity 3D 00:23:25
  • Урок 22. Inheritance & reusability in Unity 3D 00:14:05
  • Урок 23. Importing & animating a character model in Unity 3D 00:17:56
  • Урок 24. Unity 3D rigidbody & adding force with physics 00:27:38
  • Урок 25. Working with audio in Unity 3D 00:08:45
  • Урок 26. Detection collisions & using assertions in Unity 3D 00:13:39
  • Урок 27. Game state & singletons in Unity 3D 00:22:56
  • Урок 28. Creating a 2nd camera & how to make UI in Unity 3D 00:14:41
  • Урок 29. Exercise - Extending your Unity 3D Game 00:04:53
  • Урок 30. Bonus- Simple physics game in Unity 3D 00:12:48
  • Урок 31. Switching to a better code editor (VS Code) 00:13:14
  • Урок 32. Intro to Devslopes Defender Unity 3D game 00:01:00
  • Урок 33. The 2D Game Assets for your games in Unity 00:01:59
  • Урок 34. Importing sprites & grid snapping in Unity 3D Part 1 00:18:13
  • Урок 35. Importing sprites & grid snapping in Unity 3D Part 2 00:28:32
  • Урок 36. Animations & 2D colliders in Unity 3D 00:29:15
  • Урок 37. Game manager singleton & spawning in Unity 3D 00:29:22
  • Урок 38. Enemy pathfinding in Unity 3D 00:31:53
  • Урок 39. Generics & singletons in Unity 3D 00:26:46
  • Урок 40. Data encapsulation, spritesheets, & buttons in Unity 3D 00:29:50
  • Урок 41. 2D Raycasts, tags, and placing towers in Unity 3D 00:24:45
  • Урок 42. Projectiles, colliders, and more tower placement in Unity 3D 00:29:54
  • Урок 43. Registering enemies & distance-based attacks in Unity 3D 00:34:18
  • Урок 44. Shooting projectiles at enemies in Unity 3D 00:37:31
  • Урок 45. Killing enemies & other animations in Unity 3D 00:29:45
  • Урок 46. More UI & finishing touches in Unity 3D 00:28:40
  • Урок 47. UI Labels & buttons for GUI in Unity 3D 00:33:24
  • Урок 48. Building your Unity 3D game logic part 1 00:27:29
  • Урок 49. Building your Unity 3D game logic part 2 00:24:32
  • Урок 50. Adding sound FX to your Unity 3D game 00:24:13
  • Урок 51. Spawning random enemies in your Unity 3D game 00:06:10
  • Урок 52. Exporting your game as a standalone platform in Unity 3D 00:05:55
  • Урок 53. Intro to Legend of Devslopes 00:00:54
  • Урок 54. Prepping the Unity project & building the level 00:32:28
  • Урок 55. Importing character assets into Unity 00:28:18
  • Урок 56. Creating the character animation controller in Unity 00:41:21
  • Урок 57. Animating the player in Unity 00:29:39
  • Урок 58. Enemy pathfinding & navigation in Unity 00:28:12
  • Урок 59. Rigidbody and weapons in Unity 00:20:42
  • Урок 60. Implementing enemy attack systems in Unity 00:20:46
  • Урок 61. Implementing player health in Unity 00:33:34
  • Урок 62. Enemy health & player attack in Unity 00:37:54
  • Урок 63. Heads up display UI in Unity 00:15:06
  • Урок 64. Particle systems in Unity 00:19:01
  • Урок 65. How to create spawn points in Unity 00:04:36
  • Урок 66. Game manager singleton in Unity 00:33:58
  • Урок 67. Adjusting animations in Unity 00:07:58
  • Урок 68. Creating ranged arrow attacks in Unity 00:40:29
  • Урок 69. Health powerup feature and logic in Unity 00:28:50
  • Урок 70. Speed powerup feature and logic in Unity 00:22:07
  • Урок 71. Creating a game menu in Unity 00:35:11
  • Урок 72. Legend of Devslopes finishing touches in Unity 00:17:34
  • Урок 73. Intro to lightning 00:01:19
  • Урок 74. Creating particle effects in Unity 00:26:19
  • Урок 75. Working with skyboxes & directional lights in Unity 00:11:18
  • Урок 76. Using point lights to create mood in Unity 3D 00:16:59
  • Урок 77. Working with spot lights & subtle light changes 00:14:13
  • Урок 78. How to use cookies in lighting in Unity 00:10:42
  • Урок 79. How to bake lighting & support mobile games in Unity 00:08:29
  • Урок 80. Intro To Devcraft Game New 00:00:45
  • Урок 81. Creating Your First Plane Of Cubes New 00:41:58
  • Урок 82. Create Multiple Voxels New 00:36:23
  • Урок 83. Creating Multiple Chunks Of Voxels New 00:22:08
  • Урок 84. Adding Dimensions New 00:23:45
  • Урок 85. Setting Up Textures For Mobile New 00:45:35
  • Урок 86. Camera Setup For Our Character New 00:29:58
  • Урок 87. Adding Movement To Your Character New 00:30:07
  • Урок 88. Building And Destroying Blocks New 00:29:10
  • Урок 89. Character Spawning New 00:13:47
  • Урок 90. Rotating Your Character New 00:05:15
  • Урок 91. Fixing A Few Bugs New 00:07:46
  • Урок 92. Adding Audio New 00:09:48
  • Урок 93. Building Your Game To Android New 00:10:41
  • Урок 94. Building Your Game To Ios New 00:05:57
  • Урок 95. Intro to Animation & Cinematics in Unity 3D 00:01:28
  • Урок 96. Unity 3D animation editor 00:17:16
  • Урок 97. Unity cutscenes, cameras, & animation events 00:22:20
  • Урок 98. Animation curves, camera management, & character cinematics in Unity 00:25:41
  • Урок 99. Intro to Skeletons VS Zombies 00:02:02
  • Урок 100. Pathfinding with Navigation Mesh in Unity 3D 00:14:34
  • Урок 101. Camera controls for MOBA in Unity 00:08:22
  • Урок 102. Point & click movement with pathfinding in Unity 00:26:25
  • Урок 103. Animations & fireball particle effect in Unity 00:32:04
  • Урок 104. Shooting fireballs bullets in Unity 00:07:12
  • Урок 105. Intro to Unity 3D multiplayer 00:14:05
  • Урок 106. Network Manager & spawn points 00:19:38
  • Урок 107. Networking & player movement in Unity 00:07:35
  • Урок 108. Networking projectiles in Unity 00:22:09
  • Урок 109. SyncVars & keeping game data synchronized across the network in Unity 00:29:21
  • Урок 110. Rpc & calling client functions from the server in Unity 00:12:38
  • Урок 111. Unity Multiplayer Service & online matchmaking in Unity 00:07:41

27-04-2017 30-11--0001 en 238 уроков

Курс полностью основан на практике, и мы собираемся создать 6 полнофункциональных игр с нуля, используя Unity Game Engine.
Курс учит всему, от базового до более продвинутого мастерства, о том, как планировать, проектировать, разрабатывать и публиковать вашу игру.
Используя то, что вы получите в этом курсе, вы будете обладать более чем достаточными знаниями, чтобы продолжить совершенствовать себя в области разработки игр, используя...

Duration 33:21:45

23-10-2016 30-11--0001 en 65 уроков

Unity является одним из самых популярных игровых движков для мобильных и настольных игр и в режиме рил тайм моделирования. В этом курсе, автор Адам Креспи рассматривает методы, используемые в разработке игр Unity и вводит в основы дизайна уровней, анимации и много других прелестей движка. Сперва, узнай, как импортировать модели и текстуры из таких программ, как 3ds Max и Maya, настрой игровые объекты, а также добавь анимацию, чтобы довести игру...

Duration 06:47:56

05-02-2017 30-11--0001 ru 8 уроков

Duration 04:44:52

16-01-2017 30-11--0001 en 113 уроков

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

Duration 12:19:46

27-12-2016 30-11--0001 ru 7 уроков

Duration 03:44:07

16-03-2017 13-06-2018 ru 5 уроков

Теория это хорошо, но как все будет на практике? Этот курс по C Sharp создан для того, чтобы показать вам на примере модов к GTA 5 реальное использования языка C#. Вместе с автором курса вы закрипите основыне конструкции языка, создавая моды к игре. Курс будет полезным как новичкам в разработке игр, так и продвинутым разработчикам.

Duration 03:19:12

28-04-2017 30-11--0001 en 247 уроков

Этот пошаговый курс представляет собой ценный материал для будущих разработчиков игр на Unity, который отправит вас в путешествие, которое начинается с нахождения идеи для вашей игры, создания прототипа, размещения структуры и разработки в 2 и 3D.
Вы узнаете, как проектировать свою игру, проверять ее, строить и видеть, как она работает, и играть в нее.
Во время этого курса вы будете создавать игры Candy Crush, Subway Surfers,...

Duration 17:27:01

29-04-2017 30-11--0001 en 42 урока

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

Многопользовательский сетевой интерфейс высокого уровня (HLAPI)
- NetworkIdentity и NetworkTransform, для
Удаленных действий, таких как Commands и ClientRPCs
- SyncVars и SyncVar hooks
- NetworkManager и...

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

Сама платформа Unity предоставляет широкий набор инструментов, но иногда не хватает и их. Тогда в дело вступает Asset Store с миллионами ассетов, моделей и примеров проектов.

Если у вас еще мало опыта в разработке приложений, имейте в виду: Asset Store – это огромный склад велосипедов, которые уже изобрели до вас. При этом там можно найти очень много бесплатного контента, или же контента по цене одной чашки кофе (сэкономьте на латте!).

Почему мы посвятили статью именно 2D играм? Посмотрите на рынок: 2D игры сейчас переживают ренессанс. Чтобы в этом убедиться, достаточно взглянуть на инди-сектор в Steam, Ketchapp и Zeptolab в мобильной разработке. 2D игры давно превратились из отжившего свое сектора в отдельную процветающую нишу рынка. Поэтому если вы решили делать 2D игру на Unity, сначала убедитесь, что у вас в арсенале есть все нужные инструменты, чтобы обеспечить должное качество продукта.

Немного про Asset Store

Если вы читаете эту статью, то скорее всего что-то слышали про Asset Store. Там хранятся несколько тысяч моделей, плагинов, систем частиц, скриптов и многое другое. Часть этого добра распространяется за деньги, а часть совершенно бесплатно! И мы настоятельно рекомендуем пользоваться этим обстоятельством. Прежде чем реализовывать A* для ваших юнитов, подумайте: может быть, кто-то уже сделал это до вас и выложил в общий доступ в удобной форме.

Ассеты с точки зрения 2D разработки

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

Что же нам может понадобиться? Вот список:

  • Готовые шаблоны проектов, с помощью которых можно быстро научиться базовым механикам создания игры. Это могут быть как платформеры, так и что-то более специфическое, например, roguelike.
  • Так называемые Sprite packs, то есть паки текстур для вашей 2D игры. Они очень полезны на том этапе, когда у вас еще нет арта, но уже появились идеи для механики. Спрайт паки можно использовать, просто чтобы было с чем работать. Естественно, в релизной версии их лучше заменить на оригинальную графику.
  • Готовые 2D объекты. Это могут быть как классические триггеры (зоны смерти, точки респауна, телепорты), так и что-то более интересное, скажем, физически верно рассчитанный меховой шарик.
  • Скрипты и расширения редактора. Это отдельный, огромный класс компонентов, которые могут выполнять широкий спектр разных задач. Можно поставить скрипт, который добавит несколько приятных визуализаций в редактор, а можно превратить Unity в инструмент визуального кодинга, вроде Unreal Blueprints.
  • Эффекты. Сюда можно отнести огромные паки частиц, эффекты на камеру, шейдеры для спрайтов и т.п. В этом сегменте попадается особенно много бесплатных ресурсов.
  • Анимации. Сюда можно отнести библиотеку простых анимаций (твинов), а также примеры покадровой или скелетной анимации.

Непосредственно ТОП

1. Standard Assets

Пак стандартных ассетов от самой Unity. Это самые необходимые и проверенные в деле ассеты. Все они относятся к следующим категориям: 2D, Cameras, Characters, CrossPlatformInput, Effects, Environment, ParticleSystems, Prototyping, Utility, Vehicles. Эти ассеты можно подключить при установке Unity.

Великолепная библиотека твинов. Содержит все необходимые виды твинов (move, scale, rotate, alpha, color). Ее отличает очень удобный вызов методов, поддержка easing type и многое другое. Комбинируя простые твины, можно создавать очень интересные эффекты.

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

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

Более сложный пример 2D платформера от самой Unity. В отличии от 2D Platformer Controller здесь добавлена анимация, стрельба и еще множество функций и объектов.

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

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

Большой ассет для работы с скелетной 2d анимацией, включая инверсную кинематику и автоматическую генерацию весов. Раньше он стоил 60 $, но недавно Unity сделала его бесплатным. Очень мощный инструмент.

Удобный ассет-редактор для создания тайловых уровней; может разбивать атласы по сетке, рисовать уровни в редакторе Unity, добавлять коллайдеры на блоки и настраивать слои отрисовки.

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

AutoSave – ассет, который не ценишь, пока он не сработает. Суть в том, что при обычном положении вещей если Unity зависает или вылетает, а вы не сохранили сцену, то все внесенные изменения пропадут. То есть вы можете час делать уровнь, забыть сохраниться и потерять его из-за критической ошибке в скрипте (например, бесконечного цикла). AutoSave сохраняет сцену при каждом нажатии на кнопку Play. Это очень удобно.

Хороший бесплатный пак частиц с готовыми префабами. Содержит взрывы, вспышки, эффекты огня и так далее. Для начального проекта самое то, особенно если вы будете менять шейдеры у частиц и получать свои, новые эффекты.

Мощный шаблон «рогалика». Содержит в себе управление героем, врагов, этажи уровней, звуки и эффекты.

Расширенный и усиленный вариант Simple Sprite Packer. Огромное количество функционала для работы с атласами.

Интересный ассет для создания красивой 2D системы освещения с контрастными тенями. Хорошо подойдет если вы делаете тактическую игру, стэлс платформер или какой-нибудь хоррор. Подобный ассет добавит в вашу игру атмосферы.

Заключение

Разумеется, у каждого ассета из этого списка есть свои альтернативы, и, возможно, вы где-то не согласитесь с нашим выбором. Это нормально, если учесть, что в Asset Store несколько тысяч ассетов. Поэтому обязательно делитесь своими предложениями в комментариях.