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

Добавил пользователь Владимир З.
Обновлено: 19.09.2024

Здравствуйте! В этом уроке мы создадим нашего персонажа и научим его двигаться.

Для этого нам нужен спрайт персонажа. Для себя я выбрал вот такой пак со спрайтами:

Дальше переносим спрайт на сцену, который мы хотим:

Теперь нам надо добавить физику нашему персонажу, для этого в окне Инспектора нажимаем Add Component и выбираем RigidBody2D :

Также необходимо добавить само тело . Добавляем Box Collider 2D и нажимаем на значок:

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

Теперь же необходимо добавить тело земле , чтобы персонаж не проваливался сквозь неё: добавляем TileMap Collider 2D . Можно заметить, что у земли добавились зелёные линии, а если еще лучше присмотреться, то можно заметить, что эти линии находятся между тайлами, а это нам не нужно. Поэтому мы добавляем ещё Composite Collider 2D , а в TileMap Collider 2D ставим галочку у параметра Used By Composite . И о чудо, как теперь всё прекрасно выглядит!

Теперь можно запустить Игровой режим . Но что мы видим! Наша земля падает. Это случилось из-за автодобавления Rigid Body 2D , просто вместо Dynamic ставим Static . Вуа-ля, земля не падает!

Метод Start() исполняется, когда мы запускаем игру, а Update() выполняется каждый кадр .

Давайте проинициализируем переменные fox типа Rigidbody2D и speed типа float :

Теперь нам надо добавить движение нашей Лисе. Для этого в методе Update() (а лучше в FixedUpdate() , т.к. мы взаимодействуем с физическим объектом в скрипте; за уточнение спасибо Василию Курбатову , комментарий которого закреплен под этой статьёй; также уточню, что все взамидойсвтия с физ. объектами, которые будут в следующих уроках следует также добавлять именно в FixedUpdate() ) добавим одну сточку:

Не пугайтесь, сейчас расскажу, что она делает:

  1. fox.velocity - это скорость Лисы, и, как известно, у скорости есть направление, т.е. вектор ( new Vector2() );
  2. Input.GetAxisRaw() - это первый параметр вектора ( X ). Он принимает соответствующие нажатия для передвижения вправо/влево;
  3. *speed - это коэффициент скорости, который можем сами задать в интерфейсе Unity;
  4. fox.velocity.y - это координата Y Лисы.

Таким образом, эта строка создаёт вектор, который начинается на координатах Лисы и который направлен влево/вправо.

Теперь необходимо добавить прыжок . Для этого надо отслеживать нажатие клавиши (например Space ). Чтобы это делать, надо в методе Update() добавить проверку нажатия:

В условии мы проверяем на нажатие Space . Если произошло нажатие, то мы Лисе добавляем вектор, направленный вверх.

Но нам не хватает одной детали: проверки на "опору":

В условии мы добавили grounded , т.е. если мы нажали на Space и Лиса на земле , то только тогда будет прыжок. Сам же Grounded только тогда принимает значение true , когда в радиусе находится слой ground .

Чтобы добавить этот слой в Unity выбираем группу тайлов земли и нажимаем в Инспекторе Layer, Add layer (Добавить Слой):

Дальше создаём дочерний от нашего персонажа пустой игровой объект и переносим его в ноги. Затем возвращаемся к нашему персонажу.

В Ground Check я добавил пустой объект , а в Ground добавил тот слой, который только что создал.

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

В следующем уроке мы добавим анимацию нашему персонажу при движении.

Соответственно как у многих новичков есть вопросы, а именно:

1. Сложно ли будет сделать 2d игру?(Не платформер, а к примеру вид сверху)
2. Если можно, то какое направление выбрать:стратегии, рпг и т.д.
3. Так как пока не знаю ни одного языка используещие в Unity, спрашиваю:"Возможно ли будет сделать 2в игру без программирования? Или хотя бы с частичным и не большим!"

Возможно будут и ещё вопросы, но это походу. Если раззберусь вот с этим!

P.S. Почему я решил с 2D, да это просто, потому что думаю надо начинать с малого и более простого!

3. Так как пока не знаю ни одного языка используещие в Unity, спрашиваю:"Возможно ли будет сделать 2в игру без программирования? Или хотя бы с частичным и не большим!"

Автор: Дмитрий Старокожев. Начал программировать на пятом курсе университета, влюбился в Objective-C и разработку под iOS, после чего попал в Pixonic. Работает ведущим разработчиком на проекте War Robots, а в свободное время преподаёт.

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

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

Если вы решили делать сразу в 3D, не спешите закрывать страницу — знания всё равно пригодятся. Приступим.

2D. Звучит олдскульно, правда? В наши дни разработка двумерных игр приобретает какой-то особый шарм. Чувствуешь себя ценителем, которому открылась недоступная другим истина. Но одного чувства прекрасного недостаточно — у разработки в 2D есть множество нюансов.

Очевидно, что главная особенность двухмерных игр — отсутствие третьего измерения. Как определить, кто ближе к зрителю: машина, куст или огромный боевой робот? Чтобы решить эту проблему, во всех 2D-движках предусмотрен механизм сортировки спрайтов — то есть двумерных графических объектов — по оси Z. Он может называться Z-order или Sorting Layers — в любом случае, с его помощью можно перемещать объекты со слоя на слой.

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

А в 2D анимация создаётся покадрово: нужно создать атлас изображений, чтобы они стали последовательностью кадров анимации (sprite sheet). Уолт Дисней всё делал кистью и роллером, и это были шедевры (с). Этим же способом можно создавать очень красивых рисованных персонажей. Как в Cuphead, которая разрабатывалась на Unity.

А вот со звуком в 2D всё проще. Если при отрисовке мира отсутствие третьего измерения накладывает ограничения, то работа со звуком, наоборот, упрощается. Не нужно учитывать расстояние от слушателя (персонажа в игре) до источника звука — слушателем всегда будет выступать сам игрок.

Но нужна ли вообще прототипу музыка? Не думаю, что можно дать однозначный ответ (как и с анимацией). Давайте посмотрим на Hidden Folks. Это не просто 2D-игра, а настоящее произведение искусства.

Весь звук в Hidden Folks состоит из странных похрюкиваний и притопываний её разработчика, что само по себе USP — уникальное торговое предложение игры. Каждое прикосновение к экрану смартфона заставляет улыбнуться. Ладно, если запись похрюкиваний вам не подходит, в Asset Store Unity можно найти огромное количество платных и бесплатных ассетов для прототипа, а иногда и для релизной версии игры.

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

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

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

Есть YouTube-канал Brackeys. На нём — отличное вводное видео о том, с чего начать разработку платформера с плиточной графикой (tile based). Если сложно воспринимать на слух, можно включить английские субтитры.

Автор ролика приводит много примеров существующих проектов и объясняет, чем отличаются два различных подхода к созданию двумерных игр: sprite и tile based. В плейлистах канала можно найти староватый, но не потерявший актуальность туториал по созданию полноценного 2D-платформера с нуля — пошагово и со всем кодом, который можно повторить у себя и получить такой же результат.

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

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

Наконец, есть официальные туториалы от Unity. Видео сопровождаются текстовыми описаниями и даже листингами программного кода. В процессе обучения создаётся roguelike RPG в tile based мире.

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

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

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

Если нужно подтянуть навыки программирования, то на арену выходит старый и проверенный игрок — Code School. Всё происходит прямо в интерфейсе сайта, который выглядит свежо и удобно. И не чувствуешь на затылке укоризненный взгляд Лобачевского со старого портрета над доской с графиком дежурств. Точно стоит обратить внимание хотя бы на бесплатные курсы, чтобы понять, насколько удобен такой формат обучения.

Есть официальные курсы от Unity, не надо далеко ходить. Кажется, что они и дальше готовы инвестировать в это направление (а после курсов можно еще получить сертификат).

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

Вы научитесь делать игры в 2D буквально с нуля: на первом уроке установите движок, а на восьмом уже запустите проект на Android. Вы даже можете заметить меня в списке преподавателей и случайно попасть на мой поток.

Наступает время самостоятельной работы. Пора писать код своей первой игры!

  • Определите главную механику. Например, у Tower Defence это строительство башен и волны врагов.
  • Найдите туториал по главной механике или по жанру в целом.
  • Реализуйте главную механику на практике, используя примитивную графику.

О нюансах 3D-игр и туториалах для них поговорим отдельно — в следующей статье.

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

Установка программ

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

Ссылки на программы:

Начало разработки



Разработка игры

Разработка каждой игры уникальна и нет единого общего шаблона. Каждый раз вам будет необходимо придумывать все новые и новые алгоритмы проектирования вашей игры. В ходе урока мы создавали 2D гонку и описали весь процесс создания игры в большом видео уроке. Посмотреть урок можно ниже:


Ссылки из урока:

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


Больше интересных новостей

Deno заменит Node.js?

Deno заменит Node.js?

Как делать меньше ошибок в коде?

Как делать меньше ошибок в коде?

Пишем телеграмм бота на Python / Бот по выбору языка программирования

Пишем телеграмм бота на Python / Бот по выбору языка программирования

Здравствуйте, каком можно выбрать движок (C++) для игры 2D, вид сверху, из примеров таких игр - GTA 1, 2.
Может ли подойти Unity (не фанат, но все же).

Lebarto
любой, который умеет рисовать спрайтики или тебе нужна мега-физика в игре?

Frankinshtein,
А документация русская есть?

Lebarto
> Можно ли на Unity сделать полноценную 2D игру?
Кхм.
Вот тут как тебе сказать - в 2012 очень сложно было в appStore найти простую игру на Unity. А сегодня надо ПОИСКАТЬ, что сделано НЕ НА Unity. Даже, е-мае, паззлы делают на Unity, или детские игрушки за пару дней на нем.
Пару недель назад жена закачивала детские приложения для дочи - почти ВСЕ - на долбаном unity.

Opts
да тут надо брать Unity3d и даже не думать.

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

Opts
> 4. Почти на любой вопрос можно найти ответ в гугле
нет. Ответ можно получить только на школьный вопрос. Вот попробуй найти развернутый (или вообще какой-то) ответ для такой простой задачки без которой 2D игра не обойдется - вывести спрайт шириной и высотой в пикселях.

То есть такая вот самая базовая вещь, вывести спрайт размером например 100 на 100 пикселей.

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

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

Lebarto
> Во-первых мне всегда казалось что Unity это среда для школьников, поэтому игры
> на ней не воспринимают в серьез, от сюда вопрос так ли это?
Если играешь в игры, особенно на мобилках, то скорее всего порядка 60% 3д игр, понравившихся тебе, сделаны на юнити.

CasDev
> на долбаном unity.
почему такой негатив?

war_zes
> вывести спрайт шириной и высотой в пикселях.
об этом пусть думают разработчики 2dtoolkit или nGUI

Lebarto
> Можно ли на Unity сделать полноценную 2D игру?
а что в вашем понимании полноценная игра? Bad Piggies полноценная игра?

> Да и мне казалось что с углублением в C++ у меня больше перспектив.
Ну если вы осилите все тонкости и премудрости С++ то разумеется у вас есть перспективы(больше или меньше другой вопрос), т.к. опытный С++ программист всегда востребованы. Вопрос в другом, сколько вам понадобится времени, чтобы его освоить, сколько понадобится времени с большего осилить его нюансы. И это при том, что писать игры хочется уже сейчас. А не месяцами изучать С++, а только потом писать игры, да и потом, что значит изучить - это значит садиться и писать игру со всеми скверными последствиями(часами гуглить проблему, решение, а потом 10 минут кодить и снова гуглить часами). Так вот если вы возьмёте Unity3d, а не тот же SFML, то шансов сделать хоть что-то и не разочароваться в геймдеве в первом случаи у вас больше.

> что Unity это среда для школьников,
и для школьников и для профессионалов и просто для инди-разработичков, которые с помощью его зарабатывают деньги, в какой категории быть вам, решать только вам.

>По моему множество игр делаются на C++ (те же indie игры) с добавлением самописного или стороннего движка.
Чисто моё мнение, Unity не так давно вошёл в обиход, может года 2-3 назад, может 4. Не суть, а суть в том, что и до юнити писали игры, а на чём писали, конечно на С++(в большинстве), инди-студии да и вообще игровые студии разрабатывали свои движки на С++, которыми пользуются по сей день, т.к. у них уже настолько отлажен процесс создания игры на своём движке, что тот же HO делается без участия программиста вообще(Может быть поэтому тот же BFG завален ими). За годы разработок у них написаны всевозможные порты на разные платформы, отлажен процесс оптимизации, скажем, у них уже конвейерное производство и естественно им будет невыгодно переходить на Unity т.к. считай, нужно всё заново изучать тему и бороться с косяками Unity. Но сейчас, когда очередная студия разработчик хочет выпустить свой продукт среднего уровня(где важно быстро и недорого), она задумается, писать ли свой велосипед на С++ или всё же взять Unity. Думаю, выбор падёт на юнити. Вот и получается отцы геймдева работают со своими движками, которые написаны на С++, а тот кто приходит в игровую индустрию, естественно выбирает юнити.
На каждое правило, найдётся всегда исключение, но если рассматривать средне статистическое, то думаю примерно так.

Opts
>
> об этом пусть думают разработчики 2dtoolkit или nGUI
лол. Зачем мне гвоздомет если я хочу шуруп прикрутить?

Читайте также: