Как сделать квест в unity3d
Как сделать квест типа «Принеси» в Unity 5
Давайте рассмотрим ситуацию, когда вам необходимо реализовать в своей игре простую миссию, в которой нужно принести какой-то предмет.
Допустим, на вашей сцене есть главный персонаж (FPSController ), персонаж с которым необходимо поговорить (Сube) и объект (Sphere), который необходимо принести этому персонажу.
Скрипт missionplayer
Поместите этот скрипт на вашего персонажа и измените его тэг на Player.
Скрипт missionbot
Сохраните скрипт. И повешайте его на персонажа с которым нужно поговорить (Cube). В поле missionTag укажите тэг sphere, который необходимо добавить.
Добавление тэга.
Скрипт MissionObject
Вешаем этот скрипт на объект, который необходимо подобрать (Sphere) и меняем его тэг на sphere.
На этом создание квеста закончено, конечно же, можно создать, для примера, более сложную систему квестов, с несколькими окнами, с возможностью выбора квеста, с добавлением каких-то предметов за выполнение квеста или добавление опыта, но мы пока ограничимся этими функциями, которые описывают основные возможности, а остальное зависит от вашей фантазии.
Проверьте правильность выбора всех тэгов, ваш персонаж – тэг Player, предмет для подбора – тэг который мы указали sphere. Так же, проверьте поле missionTag в скрипте missionbot. Там должен быть указан тэг предмета, который нужно подобрать. Запустите игру и посмотрите как работает выполнение квеста.
Из возможных «багов», которые могут возникнуть, это проблемы с отображением курсора. Если у вас возникли другие проблемы или предложения, пишите в комментариях, мы обязательно ответим. Использовано Unity 5.3.2f1 (64-bit).
🏓 Создаем 2D-игру на Unity: инструкция для новичка
Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.
За последние годы вышло много популярных двумерных игр:
Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации – покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.
Особенности создания 2D-игр на Unity
Предварительно рассмотрим основные понятия Unity, без понимания которых будет проблематично создать игру:
Пошаговый процесс создания 2D-игры на Unity
Предполагаем, что вы уже установили редактор и создали аккаунт на портале Unity.
В первую очередь создадим новый проект и откроем его настройки (Edit → Project Settings). Во вкладке Editor установим параметр Default Behaviour Mode в значение 2D
Настройка проекта
Детальная настройка проекта
Следующим шагом сохраним текущую активную сцену, назвав ее, например, Scene1. Теперь создадим основные игровые объекты: ракетку, мяч и менеджер игры, в котором будет храниться основная логика игры.
1. Создаем пустой объект, переименовываем в GameManager.
Создаем пустой объект
2. Создаем C#-скрипт с названием GameManager. Ассоциируем скрипт с объектом GameManager, перетащив мышкой скрипт на объект.
Создаем C# скрипт
3. Создаем квадратный спрайт, называем его Pad (Assets → Create → Sprites → Square). Аналогично создаем круглый спрайт Ball (Assets → Create → Sprites → Circle). Масштабируем спрайт Pad со следующими параметрами – x:0.5, y:2.5, z:1.
Создаем спрайты
4. Создаем префабы для Pad и Ball, после чего добавляем к ним компонент Box Collider 2D (включаем параметр Is Trigger) и компонент Rigidbody 2D (выставляем параметр Body Type в значение Kinematic).
5. Создаем C#-скрипты Ball и Pad. Ассоциируем их с префабами.
6. Заполняем скрипты следующим кодом.
GameManager.cs Ball.cs Pad.cs
6. Добавляем к префабу Ball и Pad теги с аналогичными именами. Выделив префабы, в инспекторе мы можем видеть выпадающий список тегов. Там же расположены и кнопки для добавления и редактирования тегов.
7. В настройках камеры выставляем параметр Projection в значение Orthographic, а параметр Clear Flag – в значение Solid Color.
Настройка камеры
8. Настраиваем кнопки, как показано на следующих скриншотах (Edit → Project Settings → Input Manager).
Настройка ввода, основное
Настройка ввода, первый игрок
Настройка ввода, второй игрок
Вот и всё, игра готова!
Пинг-понг, итоговый результат
Билд для платформы Windows
Дополнительные туториалы
1. Официальный туториал от Unity, где детально рассмотрен процесс создания roguelike RPG.
3. Youtube-канал N3K EN содержит множество уроков как по отдельным компонентам Unity, так и полноценные серии уроков по созданию игр с нуля.
В числе прочего вы разработаете 2D-платформер с физическими загадками и динамическим освещением, научитесь портировать его на мобильные устройства. Кроме того, разработаете полноценную браузерную стратегию, а также игру в жанре двухмерных гонок.
По окончании обучения вы будете иметь портфолио из 4 игр, которое можно показать на собеседовании. Если же какая-то часть материала будет непонятна, вы всегда можете обратиться к персональному преподавателю.
Практические задания с сайта unity3dstudent.com
Из постов DisaDisa — переводов уроков с сайта unity3dstudent — я узнал об этом интересном сайте. Помимо уроков (вполне вменяемых, хотя и не совсем логичных — местами повествование переходит на очевидные моменты языков программирования (javascript, в случае этих уроков), такие как циклы или булевые выражения) там оказались ещё и так называемые “Challenges” — практические задания на применение материала из уроков. Задания сопровождаются видео-примером результата решения.
Пока таких заданий всего три, но, будем надеяться, появятся ещё. Но даже эти задания позволяют на практике ощутить простоту и удобство Unity. Разумеется, они подразумевают самостоятельное решение (ссылки на задания будут перед их решением), но если что-то вдруг не получается, можно заглянуть сюда. Ещё одна цель поста (помимо разбора конкретных заданий) — показать на примере, что можно сделать с помощью Unity с приложением минимальных усилий.
/* Для понимания статьи желательно иметь хотя бы небольшой опыт работы с Unity (особенно с пользовательским интерфейсом) — можно посмотреть пару постов от DisaDisa или первые уроки на unity3dstudent.com */
В этой статье – только про первое из заданий. Остальные — в самое ближайшее время.
Да, замечу ещё, что под формулировкой задания (видео + небольшой текст) на сайте даны ссылки на уроки, необходимые для выполнения задания.
Первое задание
Ссылка на оригинальное задание: www.unity3dstudent.com/2010/07/challenge-c01-beginner
Суть: создать сцену, в которой при нажатии на пробел в стенку кидается ящик, и после удара стенка исчезает.
Сначала создадим пустой новый проект, сразу появится сцена с камерой. Добавляем в сцену плоскость — это будет наш «пол». Слегка приблизим точку просмотра к плоскости (колёсиком мыши) для достижения состояния «не сильно мелко, не сильно крупно».
На скриншоте выделена камера.
Заметим, кто камера (объект MainCamera на панели Hierarchy) развёрнута так, что только что добавленной плоскости не видно (см. скриншот выше). Надо это исправить. Не зря же мы «прицеливались» к плоскости! Теперь можно выделить камеру (в панели Hierarchy или непосредственно на сцене) и нажать GameObject->Align With View (или нажать Ctrl+Shift+F). Это перенесёт камеру в ту точку пространства, из которой мы и смотрели на плоскость. Камера на месте, теперь поправим освещение. Добавим на сцену источник света Point Light и разместим где-нибудь так, чтобы сцена стала поприятнее визуально:
Создадим новый C# скрипт, назовём его Selfdestroyer. Удалим методы Update и Start из его текста – нам нужно лишь удалить объект при ударе. Описываем метод OnCollisionEnter — он будет прост до безобразия (предполагается, что ничто другое кроме ящиков нашу стенку ударять не будет):
Здесь gameObject – это объект типа GameObject, связанный с тем объектом на сцене, к которому прикреплён скрипт.
Заметим, что можно было описать функцию с прототипом void OnCollisionEnter(Collision obj) и в ней использовать информацию об объекте, ударившем объект, к которому прикреплён скрипт. Но нам это не нужно, так что оставим список формальных параметров пустым.
Перетащим из панели Project этот скрипт на объект wall в панели иерархии. Убедимся, что пока при запуске сцены ничего не происходит.
Здесь нам не понадобится метод Start(), а вот Update оставим и дополним так, чтобы при нажатии на пробел (это клавиша прыжка при стандартных настройках) из точки расположения объекта, к которому прикреплён скрипт (в нашем случае это будет камера) вперёд с некоторой силой бросался куб. В итоге файл скрипта будет выглядеть так:
Прикрепим скрипт к объекту MainCamera. Запустим сцену и убедимся, что … при нажатии на пробел в консоль выдаётся ошибка:
Она сообщает нам, что в скрипте Shooter переменной cubePrefab не присвоено никакого значения. Исправим этот недочёт — выберем в панели иерархии объект камеры, найдем в панели Inspector раздел с названием “Shooter (Script)”. И правда, в поле “Cube Prefab” стоит значение None. Перетащим в это поле cube из панели Project.
Теперь запускаем и стреляем кубами, пока не надоест.
Итак, написав 5 содержательных строчек кода, мы имеем: сцену, реагирующую на пользовательский ввод и объект (стенку), реагирующий на «внешние раздражители» в виде соударений. Неплохо для начала.
Первые шаги в Unity
Делаете первые шаги в Unity? Вам все кажется слишком сложным? Не переживайте, вы обратились по адресу. Ознакомьтесь со списком курсов и выберите свою программу обучения.
Поддержка сообщества в условиях COVID-19: Unity стремится поддерживать сообщество разработчиков в это трудное время. Присоединяйтесь к Create with Code Live — виртуальному онлайн-курсу для учащихся, преподавателей и для всех, кто хочет научиться программированию.
Больше, чем просто движок. Unity дает все необходимое для разработки качественного контента и достижения успеха. Разобравшись с Unity, вы поймете, насколько все просто.
Установите Unity и начните разрабатывать свою первую игру с простого и понятного шаблона Microgame. Попробуйте быстрые и интересные задания Creative Mods, каждое из которых занимает около 10 минут и позволит вам создать и опубликовать собственную игру на основе шаблона. Не забудьте присоединиться к группе пользователей Microgame, чтобы общаться с такими же начинающими единомышленниками. Мы также будем сообщать вам обо всех специальных предложениях!
Самый веселый способ изучения Unity
Установите Unity и научитесь основам игровой разработки благодаря Unity Game Dev Courses. Начните с изучения основ, а затем выберите свою специализацию: художественное оформление, программирование или дизайн игр. В результате изучения курса вы создадите великолепную игру Swords and Shovels!
Получите доступ к Unity Game Dev Courses БЕСПЛАТНО
Курсы Unity Game Dev теперь бесплатны для пользователей Unity Plus
Подробнее
Учитесь быстрее с Unity Plus
Оформите подписку на Unity Plus — для любителей, которые хотят быстрее научиться и приобрести необходимые навыки. Оформив подписку на Unity Plus с предоплатой за год, вы получите доступ к шести ценным обучающим ресурсам:
Скидка 20% в Asset Store
Ускоряйте разработку и издавайтесь быстрее, благодаря лучшим ресурсам и инструментам из Unity Asset Store. Благодаря скидке 20% на тысячи лучших и самых популярных ассетов вы приблизитесь к финишной прямой намного быстрее, чем мечтали.
Unity Success Advisor
Забудьте о неразрешимых проблемах. Став подписчиком, вы получите эксклюзивный доступ к услугам специалистов Unity, которые помогут вам:
2D игра на Unity. Подробное руководство. Часть 1
Настройка среды в Unity
Начнем с самого простого: загрузки и настройки Unity.
Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.
Для редактирования кода в Unity (4.0.1 и выше) служит редактор MonoDevelop. Если вы работаете в Windows, вы можете (и я вам советую) использовать альтернативый редактор Visual Studio 2013 Desktop (C#) для Windows, после чего в настройках Unity измените редактор по умолчанию на Visual Studio.
Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.
Mac OS X
На каком языке программировать в Unity?
Научиться пользоваться в главным интерфейсом Unity достаточно просто. Вам, может быть, будет страшно в первый раз, когда открываете программу, но уже через несколько часов вы будете чувствовать себя в нем как рыба в воде.
Вот несколько ссылок, которые могут быть вам полезными:
Первая сцена. Создаем новый проект.
Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.
Не беспокойтесь о названии. Оно определяется в настройках, и чтобы изменить имя проекта достаточно просто переименовать папку.
Разметка и панели Unity
Перед вами пустая страница. С ней вы и будете работать, но вам потребуется время, чтобы настроить интерфейс в соответствии со своими конкретными нуждами. Лично мне удобнее, когда консоль находится рядом с игровым экраном, но если у вас маленький монитор, вы можете заменить панели вкладками.
Прежде чем перейти к созданию игры, уделите несколько минут, чтобы подготовить свой проект и сцены.
Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.
Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.
Вот пример структуры, которую мы используем в наших проектах. Вы можете адаптировать ее под свои предпочтения.
Ассеты проекта
В вашей панели Project, вы можете найти различные типы ассетов:
Префабы
Многоразовые игровые объекты (например: пули, враги, бонусы).
Префабы можно рассматривать как класс в языке программирования, который может быть обработан в игровых объектах. Это некая форма, которую можно дублировать и изменить по своему желанию в сцене или во время выполнения игры.
Сцены
Сцена содержит игровой уровень или меню.
В отличие от других объектов, создаваемых в панели «Проект», сцены создаются в меню «Файл». Если вы хотите создать сцену, нажмите на кнопку «Новая сцена» в подменю и не забудьте потом сохранить ее в папку Scenes.
Звуки
Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.
Scripts
Весь код находится здесь. Мы используем эту папку в качестве эквивалента корневой папке в C# проекте.
Textures
Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в «Sprites».
Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.
Наша первая игровая сцена
Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки «Play».
Каждый объект сцены является игровым объектом для Unity. Вы можете создать объект в главной сцене, или в другом объекте игры. Также вы можете в любое время переместить объект чтобы изменить его родителя.
Пустые объекты
В Unity можно создать пустой объект и использовать его в качестве «папки» для других игровых объектов. Это упростит структуру вашей сцены.
Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.
Заполнение сцены
По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.
Для начала создайте эти пустые объекты:
Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level
В Level создайте 3 пустых объекта:
Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!
Добавляем фон в сцену
Наш первый фон будет статическим. Воспользуемся следующим изображением:
Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.
Создайте в Unity новый игровой объект Sprite на сцене.
Что такое спрайт?
По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.
Добавляем текстуру спрайта
Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background : (фон)
Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе
Слои со спрайтами
В Unity мы можем изменить «Z» наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:
Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):
Добавьте фоновый слой к вашему спрайту фона:
Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.
Добавление элементов фона
Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:
Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity.
Получение двух спрайтов из одного изображения
Выполняйте следующие действия:
В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:
Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:
Unity найдет объекты внутри изображения и будет нарежет их автоматически. Вы можете установить дефолтное значение для точки вращения или минимальный размер каждого фрагмента. Для простого изображения без артефактов, это необычайно эффективно. Тем не менее, если вы используете этот инструмент, будьте осторожны и проверьте результат, чтобы убедиться, что вы получили то, что хотели.
Prefabs (Префабы)
Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :
Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.
Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).
На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.
Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:
При переключении из 2D режима в 3D, в окне «Scene» (Сцена) вы будете четко видеть слои:
В следующем уроке:
Вы только что узнали, как создать простой статический фон и как отобразить его должным образом. Затем мы научили вас, как сделать простые спрайты. В следующей главе мы узнаем, как добавить игрока и его врагов.