Как создать игру с помощью unity3d. Работа в Unity3d: основы создания игр

  • 27.03.2020

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

Вступление

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

О чем будет цикл статей:

О самом Unity, о расширении Playmarker, о создании с нуля нескольких игр, копирующих игровые механики таких игр как Flappy Bird, Hitman Go, Ballance.

Без применения программирования? Как? По умолчанию создание полноценных игр на Unity подразумевало знание Java Script или C#, или того же C++, в случае с движком Unreal Engine. Однако прогресс не стоял на месте, и в качестве альтернативы кодингу предложили визуально-нодовые методы программирования. В Unreal это система Blueprints, в Unity же Playmarker.

В чем подвох? С теоретическим ограничением возможностей нодовой системы, относительно исходного языка программирования. Если вы не разработчик Uncharted 4 или Witcher 3, то с этим ограничением вы никогда не столкнетесь.

Намного ли нодовая система проще, чем программирование:

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

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

Процесс установки весьма прост, справится даже кот. Следующим шагом вам нужно достать модуль Playmarker. К сожалению, в бесплатной или ознакомительной версии его не найти. Остается модуль либо приобрести, либо … Ну, вы поняли. Йо-хо-хо! Запускаем Unity:

Выбираем New Project. Указываем удобный для нас путь к проекту. Даем проекту название: Tutorial — Flappy Bird. Остальные настройки оставляем по умолчанию. Итак мы зашли:

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

Сразу и навсегда запоминаем клавиши быстрого доступа к наиболее нужным режимам управления объектами: W перемещение , E вращение , R изменение размера.

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

Перемещаться в данном окне проекции можно следующими сочетаниями клавиш:

ALT + левая кнопка мыши вращение камеры , ALT + правая кнопка мыши масштабирование , F центрирование к выбранному объекту.

Комбинаций на первое время достаточно. Идем дальше:

Кнопки управления игровым режимом. Тут все интуитивно. Нажали Play — игра стартовала, если конечно вы нигде не накосячили… Структура и объекты игровой сцены. Здесь отображается все, что вы используете на конкретном уровне игры. Модели, камеры, источники света и т. д.

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

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

До встречи в следующем уроке!

Еще посты на эту же тему:


  • Как вставить картинку в ворд: выравнивание и…

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

1. Изучение программы

Для начала, рекомендую установить Monodevelop ! Давайте разберемся, что такое Unity. Unity - мультиплатформенная среда разработки игр. Именно из-за ее простоты и понятности каждый третий хоть раз делал на ней игры.

Рассмотрите скрин выше:

  • Сцена - ваша песочница для творчества.
  • Проект - здесь находятся все анимации и модели, звуки и текстуры.
  • Для установки моделей в верхнем тулбаре выбирайте Assets-Import New Asset. Также можно Assets-Import Package-Custom Package. Во втором случае пакет должен быть в расширении.unity.
  • Иерархия - все объекты на сцене. Там вы создаете родителей для объекта. Просто переместите в меню иерархии объект к другому, и он прицепится. В итоге получится своеобразная папка.
  • Тулбар - список инструментов. Там вы можете включить 2D,3D режим.
  • Инспектор - характеристика объекта, там вы добавляете анимации, скрипты и другое. Там вы можете использовать инструменты: перемещение камеры, перемещение объекта, растяжка, разворот объекта.


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

Думаю, что с этим меню у вас не будет проблем.
Чтобы создать какой либо объект кликайте.

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

2. Создание простейшей игры

Для начала создадим территорию Create-Terrain. Добавляем траву и деревья. Нажав на землю справа появится окно выбираем деревья, траву.


Также создайте горы и неровности. Затем загружайте Characher controller pack в проект. После чего ищем в окне с проектом Standart assets-Characters controller и выбираете вид от первого лица (капсула) или от третьего (механик).
Если первое лицо, то просто ставьте его на землю. Если же от третьего, то надо загрузить анимацию. Также рекомендую установить освещение на сцене Create-Directional Light.


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

Для этого зайдите в File-Build settings-player settings (для ярлыка и названия). Выбираете платформу и вуаля, готово. Для этого вам надо установить Android SDK. Но там надо указывать папку с SDK, причем надо не просто SDK, а именно API нужного уровня (например у Android 4.2 - API 17). Например, чтобы игра была на Android 4.0+ надо установить эти API.

В следующей статье я расскажу, как настроить управления под Android или iOS и научимся писать скрипты сами.

Пролог.
Всем привет. Узнав о Unity3D, я очень обрадовался. Это была вторая вещь в геймдевлопе, которая меня зацепила простотой и интуитивностью (первая Game Maker). Так как я не люблю видеоуроки (сам не знаю почему), в поисках уроков очень сильно напрягался, из-за малого количества текстовых уроков. Поэтому решил написать данный цикл статей, для таких же любителей текстовых уроков как я. Так как этот цикл ориентирован на новичков, попутно будут изучаться возможности Unity3D.
Урок 0 или небольшой план.

«Будущее должно быть заложено в настоящем. Это называется планом.
Без него ничто в мире не может быть хорошим»
Георг Кристоф Лихтенберг


1. Создаем меню с летающей камерой аля Far Cry.
2. Персонаж. Движение и управление. Камера. Меняем позицию и вид камеры.
3. Статы. Часть первая. Опыт, деньги.
4. Квесты.
5. Ai. Искусственный интеллект. Часть первая. Покупка персонажа.
6. Статы. Часть вторая. Жизни, манна. Рисуем HP и MP бары.
7. Ai. Искусственный интеллект. Часть вторая. Мобы.
8. Инвентарь. Магазин.
План может дополняться и изменятся.
Урок 1. Меню с летающей камерой аля Far Cry.
В этом уроке мы узнаем основы создания сцен в Unity3D. Узнаем некоторые стандартные возможности и некоторые дополнительные.
Использовано:
1. Terrain Toolkit http://yadi.sk/d/NECQRcVaCEKuT
2. Nature Pack http://yadi.sk/d/m8Qu8ts2CEKyB
3. Real Nature Pack 2 Autumn v2 http://yadi.sk/d/A4IN7tuMCELA3
4. Tropical Nature Pack http://yadi.sk/d/lTMMWzC4CELCf

План:
1. Создание проекта. Импорт необходимых библиотек.
2. Генерация ландшафта. Редактирование.
3. Освещение. Камера.
4. Анимация камеры(полет).
5. Создание меню.
Создание проекта. Импорт необходимых библиотек.
Запускаем Unity. В «Project wizard» переходим во вкладку «Create New Project». В «Import the following packages» выбираем следующие паки: Skyboxes, Terrain Assets, Water(в зависимости от версии unity3d, я выбрал pro)

Заходи в «Assets>>Import package>>Custom package» и переходим в папку где у вас лежат скачанные паки. Выбираем и нажимаем открыть.

Внимание!!! Паки тяжелые по этому Unity может не слабо задуматься не пугайтесь!!
Генерация ландшафта.
Нажимаем «Terrain>>Create Terrain»

Появился объект «Terrain»
Нажимаем «Terrain>>Set Resolution» И устанавливаем размеры нашего ландшафта как на скриншоте. Для сцены меню на большой ландшафт не нужен и дабы не грузить процессор достаточно этих размеров.

Тыкаем «Set Resolution»
Нажимаем «Component>>Terrain>>Terain Toolkit»


В появившемся компоненте «Terrain Toolkit» я выставил все так


Советую поиграть с настройками очень часто вылазят такие интересные варианты ландшафта.
Итак наш ландшафт готов.
Зададим ему текстуру.
В инспекторе нажимаем на кисточку а затем Edit Textures.

И нажимаем Add Texture. В появившемся окне нажимаем «Select» на Texture

В появившемся окне выбираем текстуру (двойной клик мышью), я выбрал «Grass(Hill)»


Нажимаем Add и наш ландшафт перекрашивается.


Нажимаем «Raise/Lower terrain»


Выбираем кисть, размер(Brush Size) интенсивность(Opacity). И нажимая LBM(Левая кнопка мыши) поднимаем вершину, либо нажимая Shift+LBM опускаем.
Нажимая «Smooth Height» (3 кнопка) убираем острые углы.
Дальше я нарисовал что типа песчаного пляжа добавив текстуру «Good Dirt».
Вот что у меня получилось.

Выбираем «Place trees» и нажимаем «Edit trees». В появившемся окне нажимаем кружочек.
И аналогично выбору текстуры выбираем дерево.
И варируя настройками кисти насаживаем разных деревьев.
Аналогично на предпоследней кнопке насаживаем цветов, травы, камней итд.
С одним НО для того что бы не грузить процессор мы для травы мы выбираем «Add Grass Texture» а вот для остального «Add Details Mesh».
И в последней вкладке можно побаловаться с настройками деревьев, рендера, настройками ветра. Я оставил все стандартно.
Создадим воду. В окне «Project» идем в паку «OnQ Nature Pack 2 v2>>Resources Demo>>Standard Assets>>Water(pro only)» и выбираем «Daylight water».

Перетягиваем на сцену и при помощи кнопок трансформации ставим и растягиваем как нам надо.

Вот что у меня получилось.


На этом с ландшафтом покончено.
Добавим теперь «Skybox». Для Этого идем в «Edit>>Render Settings».

И в инспекторе выбираем материал «Skybox» тыкнув на кружок.


Я выбрал «Sunny2 skybox».
Освещение и камера.
В «GameObject>>Create Other» выберем «Point light».

В инспекторе выставляем навстройки. «Position» x=100 y=100 z=100 это выставит наш источник света по центру над «Terrain» на высоте равной 100. «Range» = 150, это радиус освещения вокруг источника. И «Itensity» = 3.3.


В итоге получился довольно мягкий свет достающий везде.


У нас уже есть стандартно созданная камера «Main Camera». Кликнем на ней в окне Hierarchy. И расположим ей в позиции X=10, Z=10. A Y устанавливаем относительно высоты вашего ландшафта, у меня получилось 45. Что бы уменьшить площадь захватываемой камерой Изменяем настройку «Field of View»(У меня 43). Ориентируясь на окно «Camera Preview» поворачиваем камеру так как нам надо. У меня получилось Rotation X=5, Y=45, Z=0.
Анимация камеры (полет)
Заходим в «Window>>Animation» или нажимаем Ctrl+6. Нажимаем на стрелочки в пустом поле и выбираем «Create New Clip»

Назовем его на пример «CameraFly». Нажмем на палочку на против «Position.x» и нажмем «Add Curves». Установим позицию кадра на 300 и выставляем необходимые координаты следующего положения камеры.
У меня получились следующие значения:

200?"200px":""+(this.scrollHeight+5)+"px");">
Переменная/номер кадра 300 | 600 | 900 | 1200 | 1500| 1800
Position.x 90 | 10 | 190 | 120 | 190 | 10
Position.y 45 | 45 | 45 | 45 | 45 | 45
Position.z 90 | 190 | 190 | 100 | 10 | 10
Rotation.x 5 | 45 | 15 | 15 | 15 | 15
Rotation.y 45 | 94 | 240 | 140 | 270 | 405
Rotation.z 0 | 0 | 0 | 0 | 0 | 0


Нажмем на кнопочку Play и посмотрим что получилось. И вот наша камера уже летает. Однако пролетев круг она останавливается. Давайте исправим это.
Создадим новый C# скрипт (RMB по окну «Project» далее «Create>>C# Script») и назовем его FlyCamera. В нем пишем в методе Update всего одну строчку:

200?"200px":""+(this.scrollHeight+5)+"px");">
transform.animation.CrossFade ("FlyCamera");


Этим заставляем циклично выполнять анимацию под названием «FlyCamera». Скрипт помещаем на Main Camera.
Проверяем и все работает).
Создаем меню.
Создадим скрипт под названием «Menu».
Зададим переменные:

200?"200px":""+(this.scrollHeight+5)+"px");">
public bool showMenu = true; //Отображать ли меню


В метод «Start» пишем:

200?"200px":""+(this.scrollHeight+5)+"px");">
showMenu = true;
window = 1;


В метод «Update» пишем:

200?"200px":""+(this.scrollHeight+5)+"px");">
{
}
if(curTime >
{
window = 0;
}
{
window = 1;
}


Создаем метод «OnGUI» и пишем в него:

200?"200px":""+(this.scrollHeight+5)+"px");">
{


{
}
{
}
{
}
{
}
}

//Далее все аналогично
if(window == 2)
{

{
}
{
}
{
}
{
}
{
window = 1;
}
}

If(window == 3)
{

{
window = 1;
}
}

If(window == 4)
{

{
}
{
window = 1;
}
}


{
useGUILayout=false;
}
}


Скрипт перемещаем на Main Camera.

Сохраним сцену под названием menu.unity

Полный код скрипта menu

200?"200px":""+(this.scrollHeight+5)+"px");">using UnityEngine;
using System.Collections;

Public class Menu: MonoBehaviour {
public bool showMenu; //Отображать ли меню
public int window; //Отображаемое окно
public float lifeTime = 5.0f; //Максимальное время отображения меню
private float curTime; //Текущие время отображения меню

Void Start () {
showMenu = true;
window = 1;
}

Void Update () {
if(showMenu == true) //Проверяем включно ли меню
{
curTime += Time.deltaTime; //Если включено, Увеличиваем переменную curTime согласно пройденому времени
}
if(curTime > lifeTime) //Если время дошло до максимальной точки
{
showMenu = false; //Отключаем меню
window = 0;
curTime = 0; //Сбрасываем таймер
}
if(showMenu == false&Input.anyKeyDown) //Если меню выключено и нажата любая клавиша
{
showMenu = true; //Включаем меню
window = 1;
}
}

Void OnGUI () {
if(window == 1) //Если окно 1
{
GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), "Меню"); //Создаем окно с меню

If(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), "Новая игра"))
{
Application.LoadLevel(1); //Загружаем уровень 1
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), "Настройки"))
{
window = 2; //открываем окно настроек
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), "Об игре"))
{
window = 3; //Выводим информацию об Автарах игры
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), "Выход"))
{
window = 4; //Вызываем окно выхода
}
}

//Далее все аналогично
if(window == 2)
{
GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,250), "Настройки");
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-40,180,30), "Игра"))
{
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-0,180,30), "Аудио"))
{
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+40,180,30), "Видео"))
{
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+80,180,30), "Управление"))
{
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+120,180,30), "Назад"))
{
window = 1;
}
}

If(window == 3)
{
GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-80,200,220), "Об игре");
GUI.Label(new Rect(Screen.width/2-90,Screen.height/2-0, 180, 40), "Инфа о разрабе");
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+100,180,30), "назад"))
{
window = 1;
}
}

If(window == 4)
{
GUI.Box (new Rect (Screen.width/2-100,Screen.height/2-60,200,120), "Выход?");
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2-20,180,30), "Да"))
{
Application.Quit(); //Выход из игры
}
if(GUI.Button (new Rect (Screen.width/2-90,Screen.height/2+20,180,30), "Нет"))
{
window = 1;
}
}

If(window == 0) //Если это окно то выключаем меню
{
useGUILayout=false;
}
}
}


Компилированная сцена http://yadi.sk/d/f5pFI0_pCG7YC

P.S. Прошу строго не судить, это моя первая статья.
P.P.S. Для тролей: да я быдлокодер, идите лесом!

Unity - это игровой движок, на котором строится большая часть современных игр на разных платформах. Посредством движка реально создавать игры, ориентированные на запуск на компьютерах (Windows, Linux, MacOS), мобильных телефонах, планшетных компьютерах (Android, iOS, Windows Phone) и даже игровых приставках PlayStation, Xbox, Nintendo.

Создание игр на движке Unity невозможно представить без написания дополнительного кода. В Unity поддерживается два языка программирования - и . Раньше также поддерживался язык Boo, но позже от него отказались.

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

В Unity используется встроенные функции, которых нет ни в C#, ни в JavaScript. За счёт этого особо не имеет значения знает вы язык программирования или нет. Тем не менее, мы все же рекомендуем сперва пройти курс по изучению языка C#. Курс представлен на нашем сайте по .

План курса

За курс мы создадим простую игру под названием «Roll a Ball». В игре будет шар, который можно будет передвигать за счёт стрелок на клавиатуре. При передвижении объект сможет поглощать другие объекты на поверхности, тем самым собирая очки.

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

Как создать игру в Unity

Казуальные игры в жанре match 3 (три в ряд) - одни из самых популярных на рынке. Многие играют в Candy Crush, Bejeweled и прочие. У этих игр простая цель: перемещать мозаичные элементы до тех пор, пока три одинаковых элемента не окажутся рядом. Когда это происходит, совпавшие элементы исчезают, а на их месте появляются другие. Игрок при этом набирает баллы.

В этом руководстве будут освещаться следующее:

  • Создание доски, заполненной мозаичными элементами
  • Выбор и отмена выбора мозаичных элементов
  • Идентификация соседних элементов с помощью raycasts
  • Замена элементов
  • Поиск совпадающих трех и более элементов с помощью raycasts
  • Заполнение пустых элементов
  • Ведение счета и подсчет движений

Примечание . Предполагается, что вы уже знаете, как пользоваться редактором Unity, как редактировать код, и что у вас есть базовые знания по части C#.

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

Share this article:

Related Articles