2d игра на unity. подробное руководство. часть 1
Содержание:
- Создание процедурных платформ
- Настройка среды в Unity
- Что такое Unity
- Как научиться создавать игры на Юнити с нуля
- С чего все начиналось
- 2014
- 2015
- Счетчик
- Создание случайных объектов на игровом поле
- Prefabs (Префабы)
- Идея
- Окно иерархии
- Добавление дороги
- Создание проекта
- Объекты Unity Game
- Кнопки воспроизведения
- Как экспортировать / опубликовать игру в браузере WebGL
- Доступ к другим игровым объектам и компонентам
- Генерация бесконечной дороги
- 2019
Создание процедурных платформ
Итак, в первой части этого урока мы просто создали базовую платформу, на которой ваш персонаж может прыгать (и падают на свою гибель) — но для настоящего платформера нам нужно добавить дополнительные платформы. Но мы не хотим добавлять миллион платформ — мы хотим, чтобы Unity автоматически Создайте платформы, пока наш персонаж подпрыгивает.
Для этого нам понадобится шаблон платформы, также известный как «сборный». Prefab — это сокращение от сборные, и это просто означает «готовый» — обычно это копия игрового объекта, которую вы можете использовать снова и снова. Фактически, сборные могут содержать иерархии игровых объектов, что означает, что вы можете «собрать» целую сцену из игровых объектов.
Итак, что вам нужно сделать, это создать новую папку с ресурсами с именем Сборные, затем перетащите нашу платформу из Иерархия панель в эту новую папку. Префабы будут распознаваться на панели Иерархия по синему цвету.
Теперь, чтобы указать Unity на создание процедурных платформ, нам нужно создать скрипт под названием GameManager и прикрепить его к камере. Сценарии GameManager в основном содержат важные инструкции для движка по передаче игрового процесса — в этом случае он будет генерировать платформы по мере продвижения нашего персонажа.
Причина, по которой мы прикрепляем его к камере, заключается в том, что камера никогда не разрушается и остается неизменной — поэтому скрипт никогда не разрушается и остается постоянным, будучи прикрепленным к нему.
Вот что нужно включить в сценарий:
Чтобы немного объяснить этот код, нам необходимо создать ссылку как на сборную панель, так и на сферу (наш персонаж), поэтому вам нужно перетащить их в соответствующие слоты в редакторе.
Этот код также содержит три частные переменные — строки, начинающиеся с частный вар. Они будут создавать (ссылаться) на сборную панель следующими способами:
- Граница частного var: float устанавливает ограничение на ось Y, поэтому, когда наш персонаж прыгает выше чем эта граница, будет создана новая панель.
- Частное вращение var: Quaternion; просто добавляет необходимое вращение для создания экземпляров наших префабов, однако мы добавляем вращение = Quaternion.identify; потому что это указывает движку не вращать игровой объект. Объект (наши сборные панели) буквально «идеально выровнен» с миром.
- Последняя частная переменная lastPlatformPosition запомнит и сохранит положение последней платформы как трехмерный вектор (в основном, платформы не исчезнут за вами, поэтому вы можете вернуться назад по игровому миру, если хотите).
В следующем фрагменте скрипта мы добавим проверку для каждый кадр находится ли наша сфера (персонаж) над границей (которая генерирует новые платформы) — если наш персонаж находится выше границы, мы будем поднять границу создать новую панель / платформу выше предыдущей.
Наш следующий шаг — добавление кода, который определяет следующую позицию панели:
Мы используем делать пока цикл в этом коде, чтобы гарантировать, что значения вектора X и Z (его положение в игровом мире) не идентичны предыдущим платформам, поэтому наши процедурно сгенерированные платформы всегда будут увеличиваться в высоту.
Конечно, мы не хотим, чтобы эти ценности были строго размещены — немного случайности — это хорошо, иначе мы просто делаем идеальную лестницу. Итак, мы используем Random.Range между значениями -1 и 2, чтобы вызывать случайные значения для X и Z. Вы можете немного поиграть с этими числами, если хотите пошалить.
Настройка среды в Unity
Начнем с самого простого: загрузки и настройки Unity.
Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.
Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.
Mac OS X
— существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.
На каком языке программировать в Unity?
Unity позволяет кодировать на трех языках: JavaScript, C# и Boo. Рекомендую использовать C# — он более мощный и проще.
Научиться пользоваться в главным интерфейсом Unity достаточно просто. Вам, может быть, будет страшно в первый раз, когда открываете программу, но уже через несколько часов вы будете чувствовать себя в нем как рыба в воде.
Вот несколько ссылок, которые могут быть вам полезными:
- : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
- : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.
Выберите меню File, а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.
Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.
Не беспокойтесь о названии. Оно определяется в настройках, и чтобы изменить имя проекта достаточно просто переименовать папку.
Что такое Unity
Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.
Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — , успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.
В игровой индустрии существуют десятки разных движков. Одни разработаны под конкретную игру, на других можно делать игры конкретного жанра (шутеры от первого лица, платформеры, гонки), а есть универсальные, вроде Unity, которые открывают разработчикам больше возможностей. Уникальность Unity заключается в сочетании нескольких факторов. Кроме того, что этот движок позволяет создавать проекты под разные устройства и не ограничивает разработчика конкретным жанром, он:
- имеет практически неограниченный бесплатный функционал;
- не требует глубокого знания языков программирования для создания первых простых проектов;
- имеет многочисленное и активное сообщество, в котором можно найти ответ на любой вопрос, потому что среди такого большого количества людей кто-то обязательно уже сталкивался с вашей проблемой.
Как научиться создавать игры на Юнити с нуля
Если хотите научиться разработке игр на Юнити, то у вас есть 3 варианта обучения:
- Заниматься самостоятельно по книгам и видеоурокам из интернета.
- Получить высшее образование в вузе на факультете информационных технологий.
- Осваивать профессию с нуля дистанционно – на курсе по геймдеву в онлайн-школе.
Каждая из форм обучения имеет свои особенности – расскажем о них подробнее и дадим рекомендации будущим Unity-разработчикам.
Самостоятельно
Вам подойдет самообучение, если вы обладаете высокой мотивацией, самодисциплиной, большим запасом времени и при этом хотите учиться бесплатно. Чтобы изучать движок самостоятельно, нужно составить пошаговый план и найти учебные материалы.
Например, начинающим разработчикам игр на Юнити рекомендуют следующие книги:
- «Unity и C#. Геймдев от идеи до реализации» Д. Бонда.
- «Game Engine Architecture» Д. Грегори.
- «Unity для разработчика. Мобильные мультиплатформенные игры» Д. Мэннинга и П. Батфилд-Эддисона.
А также будет полезно изучить руководство пользователя на официальном сайте Юнити или найти видеоуроки, например, на Youtube.
Стоит отметить и трудности, с которыми вы столкнетесь в процессе самообучения:
- Требуется много времени, чтобы самому разобраться с теорией.
- Не к кому обратиться с вопросом или за помощью.
- Никто не сделает код-ревью и не оценит качество игр.
- Слабые практические навыки из-за отсутствия реальных проектов и ТЗ.
- Нет диплома и портфолио, из-за чего возникнут сложности с трудоустройством.
В вузе
Несмотря на то, что геймдев – это популярное и востребованное направление, в российских университетах нет специальности «Разработчик игр». Но можно выбрать любой другой IT-факультет, на котором изучают математику, информатику и языки программирования, например, «Информационные технологии», «Разработка ПО», «Вычислительная техника».
Помимо этого учеба в вузе имеет и другие минусы:
- Нет возможности учиться и параллельно работать из-за необходимости очно посещать лекции.
- Высокая стоимость. Обучение длится не менее 4 лет, поэтому расходы быстро не окупятся.
- Каждые 3-4 месяца нужно сдавать курсовые, зачеты и экзамены, в том числе по второстепенным дисциплинам.
- Много устаревшей или неактуальной теории, которая не пригодится в работе.
- Недостаточно практических занятий, из-за чего после выдачи диплома вы будете теоретиком, а не практиком.
- Придется самому искать стажировку, чтобы получить реальный опыт.
На онлайн-курсах
Онлайн-курс – это самая удобная и эффективная форма обучения. Научиться созданию игр на Unity можно за несколько месяцев. Вы сделаете собственные видеоигры на Юнити и C#, сможете работать по специальности сразу после получения диплома.
Дистанционная учеба имеет множество плюсов:
- Гибкий график – можно смотреть онлайн-трансляции по расписанию или записи занятий в свободное время.
- Учебная программа содержит только нужную теорию, без воды и лишней информации.
- Знания сразу же закрепляют на практике – будут воркшопы и домашние задания с проверкой.
- К концу курса у вас готовое портфолио из нескольких игр разных жанров.
- Доступ к видеолекциям останется навсегда, их можно смотреть неограниченное количество раз.
- Вы сможете общаться с экспертами отрасли – опытными разработчиками, геймдизайнерами и руководителями game-студий.
- HR-консультант онлайн-школы бесплатно проконсультирует вас по вопросам трудоустройства.
Подборка курсов
Все онлайн-курсы по разработке игр на Unity в 2021 году
Посмотреть подборку
С чего все начиналось
Шел третий курс универа
По образованию я моряк, однако, после первого рейса, я понял, что перспектива отстуствия на «земле» по 6 месяцев в году меня не радовала, хоть по зарплате в этой отрасли никого не обижают.
Выбор направления
Появилась острая необходимость найти «дело», которое будет приносить удовольствие, не придется отрываться от современного мира на длительный срок и иметь финансовый достаток в перспективе сравнимый с моей по образованию профессией. Конец 4 курса универа и мой выбор пал на IT индустрию, а именно на python разработчика. Уделив 2 недели теории, в частности технической документации языка, я начал развивать логику и выполняя задачки каждый день на протяжении полугода, пока в конце декабря 2018 года не обнаружил геймдев.
А вот и Unity!
Выглядит комично или даже банально, но я повелся на клик-бэйт видео с подобным названием «Как сделать свою первую игру за 15 минут» или «Делаю крутую игру за 5 минут без регистрации и смс». Посмотрев данные материалы, в голове появилась мысль, выделить себе пару дней в своем графике, и утолить свое любопытство, установив данную среду разработки на свой компьютер. Потыкав разные кнопочки, и написав код методом «copy-paste», я пришел в неописуемый восторг! Моя творческая натура внутри меня ликовала. Ведь это было так приятно наблюдать за тем, что ты «сам» написал пару минут назад, сейчас заставляет кубик крутиться, перемещаться или менять цвет. Так уж вышло, что средой разработки установленной на мой компьютер оказалась Unity.
Почему Unity?
Он бесплатный, не такой сложный в освоении, большое сообщество и тонны ресурсов для самообучения, поэтому отлично подходит для начинающих разработчиков. Мобильный рынок заполнен проектами созданные на Unity. Даже такие крупные компании как Blizzard, Riot Games, CD Project RED выпустили всеми известные хиты как Hearthstone, Wild Rift и Gwent, используя эту платформу. Приняв волевое решение, я решил уйти в геймдев на пару с Unity.
2014
Выходит красивейшая изометрическая головоломка Monument Valley. Студия Ustwo Games, состоящая всего из восьми человек, зарабатывает $5,8 млн — при затратах на разработку в $900 тысяч.
Начинается эра Kickstarter — студии почувствовали, что теперь даже независимая команда может получить бюджет под свой проект, не влезая в кабалу к издателям. Так, благодаря Kickstarter игра Wasteland 2 получила $3 млн на разработку от игроков.
В наш топ попадает и симулятор выживания Subnautica — новый проект студии Unknown Worlds Entertainment, которая до этого выпустила две части командного шутера Natural Selection на модифицированном движке Half-Life. Сейчас этот шутер благополучно забыт, а вот в Subnautica играют до сих пор.
Синематик Subnautica
2015
Год во многом знаковый для отрасли. Кроме «рогалика» Sunless Sea и симулятора ядерного убежища Fallout Shelter от Bethesda, на Unity вышла партийная RPG Pillars of Eternity и платформер-метроидвания Ori and the Blind Forest.
Обе игры делались опытными, но независимыми командами. Pillars of Eternity — проект Obsidian, той самой студии, которая подарила миру Star Wars: Knights of the Old Republic II — The Sith Lords, Neverwinter Nights 2 и горячо любимый фанатами Fallout: New Vegas.
В визуальном стиле PoE легко узнаются RPG «старой школы», такие как Baldur’s Gate и Icewind Dale
Особенность геймплея — разветвленные системы диалогов, где каждое умение, характеристика или даже прошлое персонажа определяют варианты ответа и исход сцены
Помимо того, что PoE получилась действительно хорошей игрой, она запомнилась ещё и своими успехами в краудфандинге — целевую сумму в 1 миллион долларов студия получила уже на второй день кампании. Всего игра собрала 4 млн — это второе место среди видеоигр за всю историю Kickstarter. PoE продалась тиражом свыше 500 000 копий в год — это позволило студии окупить расходы и приступить к разработке второй части.
Визуальные эффекты сиквела Deadfire. Игра тоже сделана на Unity
Что до Ori and the Blind Forest, то это одна из самых красивых 2D-игр за последние лет десять: здесь есть вручную нарисованные фоны, в которых ни одна деталь не повторяется за всю игру, и потрясающая плавная анимация, и эффекты, а ещё эстетика, близкая по духу работам студии Ghibli («Принцесса Мононоке», «Унесённые призраками», «Мой сосед Тоторо»).
За год только через Steam было продано 420 млн копий игры, она вышла на все актуальные платформы, включая Switch.
Ранний прототип Ori мы делали на Construct, над ним работало всего два человека. Когда же мы поняли, что хотим развить проект в полноценную игру, выбор, естественно, пал на Unity. Мы перенесли наш прототип на движок всего за неделю — и Ori сразу почувствовал себя как дома. Unity — мощный, расширяемый, интуитивно понятный и вместе с тем доступный инструмент для нашей маленькой команды. Мы хотим быть гибкой и независимой студией, и этот движок для такого — то, что надо.
Moon Studios
Счетчик
Откройте GUIManager.cs (находится под Scripts\Managers) в редакторе кода. Этот скрипт отвечает за UI-аспекты игры, в т.ч. счетчик движений и очков.
Добавьте эту переменную в верх файла, ниже private int score;:
private int moveCounter;
Теперь добавьте это в верхнюю часть метода Awake(), чтобы установить число движений, которые может совершать игрок:
moveCounter = 60;
moveCounterTxt.text = moveCounter.ToString();
Теперь понадобится инкапсулировать данные, чтобы обновлять UI Text всякий раз при обновлении значения. Добавьте следующий код над методом Awake():
public int Score {
get {
return score;
}
set {
score = value;
scoreTxt.text = score.ToString();
}
}
public int MoveCounter {
get {
return moveCounter;
}
set {
moveCounter = value;
moveCounterTxt.text = moveCounter.ToString();
}
}
Так вы удостоверитесь, что при изменении переменных Score или MoveCounter, текстовые компоненты, представляющие их, будут также обновляться. Можно было бы поместить обновление текста в метод Update(), но так будет лучше для производительности.
Пришло время добавлять баллы и отслеживать движения.
Сохраните скрипт и откройте BoardManager.cs. Добавьте следующий метод ShiftTilesDown, непосредственно над yield return new WaitForSeconds(shiftDelay);:
GUIManager.instance.Score += 50;
Счет будет увеличиваться при появлении пустого элемента.
В Tile.cs, добавьте следующую линию ниже SFXManager.instance.PlaySFX(Clip.Swap); в методе ClearAllMatches:
GUIManager.instance.MoveCounter—;
Это будет понижать MoveCounter всякий раз, когда спрайт будет заменяться.
Сохраните свою работу и проверьте, работают ли корректно счетчики движения и баллов. Каждое совпадение должно добавлять какие-то очки.
Создание случайных объектов на игровом поле
Откройте скрипт BoardManager и добавьте эти строчки кода в метод , сразу под выражением .
Эти строчки делают ключевые вещи:
- Устанавливают для всех тайлов компонент BoardManager в качестве родительского, чтобы упорядочить иерархию в редакторе.
- Случайно выбирается спрайт из нескольких, которые были ранее добавлены.
- Устанавливается заново созданный спрайт тайла в случайно выбранный спрайт.
Запустите игру, чтобы увидеть игровое поле с различными фишками.
Как вы могли заметить, игровое поле может генерировать совпадающие комбинации из трех объектов в начале, и это немного забавно вообще-то.
Prefabs (Префабы)
Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs:
Таким образом вы создадите , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в , представляет собой новый ряд кнопок прямо под его именем:
Создание префабов с объектами-платформами упростит их повторное использование. Просто перетащите Prefab на сцену, чтобы добавить копию. Попробуйте добавить другую платформу таким же образом.
Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на ).
На данном этапе все это выглядит еще сыроватым, но в следующих двух главах мы добавим параллаксный скроллинг, и сцена оживет у нас на глазах.
Слои
Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:
Слой | Позиционирование по оси Z |
---|---|
0 — Задний фон | 10 |
1 — Средний фон | 5 |
2 — передний фон |
При переключении из 2D режима в 3D, в окне «Scene» (Сцена) вы будете четко видеть слои:
В следующем уроке:
Вы только что узнали, как создать простой статический фон и как отобразить его должным образом. Затем мы научили вас, как сделать простые спрайты. В следующей главе мы узнаем, как добавить игрока и его врагов.
Идея
Всем привет! Не так давно, я решил, что хочу написать простую игру. У меня уже были проекты, был даже один который я уже выкладывал в google play, он даже насобирал неплохих отзывов на мое удивление, однако разошелся тиражом в 3000 копий. В этот раз решил, что хочу написать простую игру, очень простую, такую, чтоб потратить не больше месяца, выложить в маркет и радоваться положительным отзывам, ну и конечно копеечке с рекламы.
Долго думал, какой же выбрать жанр, сеттинг, механику… Что выбрать за главную фичу? Чем игра должна заинтересовать пользователей?
Решение пришло совершенно неожиданно, как это обычно и бывает. Я смотрел видео на ютубе и увидел ролик, как люди ловили предметы, которые падали из башен. Что поймал, то и унес домой. Вроде звучит достаточно просто. Не так ли?
Какого же было мое удивление, когда я смотрел видео и переживал за игроков! В этот момент меня осенило, и уже на середине ролика я горел идеей написать быстрый проект на такую тематику!
За пол часа я накидал простой прототип. Ничего сложного. Есть 2 башни, из которых падают квадраты. Другим квадратом ты ловишь эти квадраты. Выглядело это примерно так.
Первый набросок игры.
Окно иерархии
Окно иерархии (Hierarchy Window) содержит список всех текущих объектов (GameObjects), используемых в вашей игре. Но что такое GameObject? Простыми словами, GameObject — это объект в вашей игре.
GameObjects — это пустые контейнеры, которые вы настраиваете, добавляя компоненты. Компоненты позволяют GameObjects проецировать геометрию (от простого куба до более сложных трехмерных моделей), излучать свет, действовать как камера или даже создавать сложное поведение с помощью сценариев.
GameObjects также могут действовать как папки, содержащие другие GameObjects, что делает их весьма полезными для организации вашей сцены. Вы увидите GameObjects в действии во второй части этого урока.
Сцена обычно представляет один уровень вашей игры, хотя теоретически вы можете поместить всю игру в одну сцену. Любые GameObjects, активно используемые в вашей игре в текущей сцене, появятся в окне Иерархии (Hierarchy).
Каждая новая сцена начинается с основной камеры и направленного света, которые оба являются объектами GameObject. Но вы всегда можете удалить их и добавить позже. Когда вы удаляете GameObject из Иерархии, вы фактически удаляете его из сцены.
По мере того, как ваша сцена разрастается большим количеством GameObjects, панель поиска окажется бесценным инструментом.
Добавление дороги
Создайте пустой объект и назовите его Road — в нём будут размещаться все машины и дорожные блоки.
Добавьте в него первый блок:
У объекта Road координаты должны быть по нулям, а у блока X можно поставить на ноль либо на -24.69 — столько он занимает места. Эта цифра нам понадобится, чтобы добавлять новые блоки.
Теперь для блока нужно подключить коллайдеры Box Collider. Но добавлять их нужно не на сам блок, а на дорожное полотно (Plane) и бордюры (Plane_002).
Для полотна сразу установите тег Road (его нужно создать, нажав на Add Tag). Затем приступайте к бордюрам. Это один объект, поэтому нужно просто добавить два коллайдера:
Для бордюров установите тег Wall (его тоже нужно создать). Теги пригодятся для того, чтобы определять, с чем именно сталкивается машина игрока.
Создание проекта
После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.
Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.
Объекты Unity Game
Что такое GameObjects
GameObjects — это основной строительный блок всего игрового движка Unity. Название почти выдает это:Все, что вы помещаете в сцену в Unity, должно быть заключено в «игровой объект».
Если у вас есть опыт веб-дизайна, вы можете думать о GameObjects как о элементах <div>! Чрезвычайно скучные контейнеры, но они легко расширяемы для создания сложной функциональности или визуальных эффектов.
Я поднял это прямо из окна редактора Unity, чтобы подчеркнуть это.
Буквально все, от эффектов частиц, камер, игроков, элементов пользовательского интерфейса… (список продолжается) — это GameObject.
Создание иерархии
Как и <div> в веб-разработке, GameObject также является контейнером. Подобно тому, как вы вкладываете <div> для создания разнообразных и желаемых макетов или абстракций, вы можете сделать то же самое с игровыми объектами.Логика вложения игровых объектов во многом такая же, как и при веб-разработке, я приведу несколько примеров …
Беспорядок и эффективность
Позиционирование
Кнопки воспроизведения
Кнопки воспроизведения (Play Buttons) позволяют запускать и останавливать игру. Первая кнопка — кнопка воспроизведения:
Несколько вещей происходят, когда вы нажимаете кнопку Play. Сначала ваша игра запустится, как и ожидалось. Набор кнопок также станет синим, чтобы показать, что игра находится в движении.
Интерфейс Unity затемнится, чтобы показать, что игра активна.
Помните, что любые изменения, которые вы делаете при запущенной игре, будут потеряны, как только вы остановите игру.
Далее следует кнопка Пауза:
Она позволяет сделать паузу и вносить изменения в игру.
Как и в режиме запущенной игры, эти изменения будут потеряны, как только вы остановите игру. Редактирование GameObjects во время игры и паузы — это система читинга и балансировки, которая позволяет вам экспериментировать с игрой, не опасаясь навсегда ее сломать.
Наконец, последняя кнопка Step:
Она позволяет вам шаг за шагом проходить игру. Это удобно, когда вы хотите наблюдать анимацию по кадрам, или когда вы хотите проверить состояние определенных GameObjects во время игры.
Как экспортировать / опубликовать игру в браузере WebGL
Откройте настройки сборки и выберите WebGL в качестве целевой платформы. Теперь нажмите кнопку Платформа переключателя кнопку и, наконец, нажмите кнопку Строить и дайте игре название. После сборки он будет экспортирован / сохранен как файл .HTML, который можно открыть / просмотреть в любом браузере с поддержкой WebGL. Хотя если хочешь публиковать в вашей игре есть два метода для этого:
- Загрузите игру на какой-нибудь файловый хост (Dropbox, Google Drive и т. Д.), Затем поделитесь ссылкой. Это полезно для небольших демонстрации вы хотите показать друзьям или потенциальным клиентам (веб-сайты игровых порталов, которые либо купят вашу игру, либо будут получать от вас доход от рекламы).
- Загрузите свою игру на свой FTP-сервер и вставьте ее в
Вы можете настроить эти значения iframe и делать с ними разные вещи. Например, добавив теги iframe, такие как allowfullscreen = true позволит вашей браузерной игре работать в полноэкранном режиме.
Дополнительные ресурсы:
Я бы посоветовал нет пытаюсь опубликовать эту игру, которую мы создали в этом руководстве, на портале платформенных игр; вы будете выглядеть действительно глупо, если не отполировать его.
Один из способов придать вашей игре вид намного лучше, особенно если вы не особенно хороши в создании 3D-моделей, стоит использовать бесплатные (или платно) Ресурсы
Вот несколько библиотек, на которые стоит обратить внимание:. GameArt2D: Халява (в основном ресурсы на основе спрайтов / пикселей)
GameArt2D: Халява (в основном ресурсы на основе спрайтов / пикселей)
Действительно есть тонна ресурсов, вы просто должны быть осторожны и читать мелкие шрифты — некоторые бесплатные ресурсы разрешено использовать в коммерческих проектах, другие позволяют вам использовать их ресурсы только в том случае, если ваша игра является бесплатной.
Доступ к другим игровым объектам и компонентам
Часто нам нужно взаимодействовать с другими GameObject, а также с их ассоциированными компонентами. Если у вас есть ссылка на игровой объект, это довольно просто.ComponentName comp = some_game_object.GetComponent <ComponentName> ();
После этого вы можете получить доступ к любому из общедоступных методов / переменных компонента, чтобы управлять GameObject. Это простой момент, однако на самом деле получить ссылку на GameObject можно несколькими способами …
Доступ через переменную инспектора
Это самый простой способ. Просто создайте общедоступную переменную для GameObject, как мы продемонстрировали ранее с префабами, и вручную перетащите ее на компонент через инспектор. Затем перейдите к переменной, как указано выше.
Доступ через теги
Мы можем пометить GameObjects или prefabs через инспектор, а затем использовать функции поиска игровых объектов, чтобы найти ссылки на них.
Это просто делается, как показано ниже.GameObject some_game_object = GameObject.FindGameObjectWithTag («Кирпич»);
Доступ через преобразование
Если мы хотим получить доступ к компонентам в каком-либо родительском объекте, мы можем легко сделать это с помощью атрибута transform.ComponentName comp = gameObject.transform.parent.GetComponent <ComponentName> ();
Доступ через SendMessage
В качестве альтернативы, если мы хотим отправить сообщение многим другим компонентам или хотим отправить сообщение объекту, который находится далеко вверх по вложенной иерархии, мы можем использовать функции отправки сообщения, которые принимают имя функции, за которым следуют аргументы.gameObject.SendMessage («MethodName», параметры); // Трансляция сообщениеgameObject.SendMessageUpwards («ИмяМетода», параметры); // Получено только компонентами, вложенными выше.
Генерация бесконечной дороги
Чтобы машина не падала в пропасть, нужно добавить бесконечную генерацию дороги.
- Перед машиной будет добавляться столько дорожных блоков, сколько нужно, чтобы не было видно пропасти.
- Когда машина проезжает достаточное расстояние от определённого блока, он удаляется, чтобы освободить оперативную память.
Для этого создадим скрипт RoadBlock и прикрепим его к дорожному блоку. В нём будет всего два метода:
Сохраните блок как префаб. А инстанцироваться новые объекты будут в скрипте Road:
Те блоки, которые есть на сцене, нужно поместить в коллекцию Blocks. Также надо сразу заполнить остальные переменные.
Теперь можно проверить, как это выглядит:
2019
Последний год, по которому можно подвести итоги. Вышла Phoenix Point — игра от создателя серии тактических стратегий X-COM, сделанная в том же жанре. Игра собрала нужный бюджет ($765 тысяч) с помощью краудфандинга, а сделка на годовую эксклюзивность с Epic Games Store, по слухам, принесла разработчикам $2 млн — это деньги без учёта прибыли от продаж.
Но наиболее заметным проектом стала не игра от культовых фигур геймдева, а неожиданный проект японского актера Маси Ока и его студии Mobius Digital — инди про исследование космоса Outer Wilds.
Маси Ока известен по роли Хиро Накамура в фантастическом сериале «Герои: Возрождение»
Игру называли удачным сочетанием исследований неизведанного космоса в духе No Man’s Sky и детективного расследования, как в Return to the Obra Dinn.
Трейлер игры с демонстрацией геймплея: каждая планета миниатюрной Солнечной системы, в отличие от No Man’s Sky, была создана вручную