Как сделать 2д игру с видом сверху в юнити
Здравствуйте! В этом уроке мы создадим нашего персонажа и научим его двигаться.
Для этого нам нужен спрайт персонажа. Для себя я выбрал вот такой пак со спрайтами:
Дальше переносим спрайт на сцену, который мы хотим:
Теперь нам надо добавить физику нашему персонажу, для этого в окне Инспектора нажимаем 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() ) добавим одну сточку:
Не пугайтесь, сейчас расскажу, что она делает:
- fox.velocity - это скорость Лисы, и, как известно, у скорости есть направление, т.е. вектор ( new Vector2() );
- Input.GetAxisRaw() - это первый параметр вектора ( X ). Он принимает соответствующие нажатия для передвижения вправо/влево;
- *speed - это коэффициент скорости, который можем сами задать в интерфейсе Unity;
- 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?
Как делать меньше ошибок в коде?
Пишем телеграмм бота на 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
лол. Зачем мне гвоздомет если я хочу шуруп прикрутить?
Читайте также: