Программирование игры с Unity: руководство для начинающих

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

Так что не забудьте проверить их на предмет вдохновения в отношении того, чего можно достичь с помощью таких инструментов, как Unity.

Это руководство доступно для скачивания в формате PDF. Загрузить Программирование игры с Unity: руководство для начинающих сейчас. Не стесняйтесь копировать и делиться этим со своими друзьями и семьей.

Эти инди-команды разработчиков игр продемонстрировали гибкость и толерантность к риску, что во многих случаях позволяет им продвигать инновации в игровом процессе быстрее, чем их большие бюджетные аналоги. За последние годы были выпущены несколько потрясающе успешных инди-игр, включая Minecraft, Limbo и Super Meat Boy, и даже если вам не нужны навыки, чтобы создавать подобные игры, вы можете создать игру с помощью Buildbox.

,

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

с немного DIY знаю, как!

Даже крупные студии, такие как CCP (разработчики Eve Online), используют его для быстрого прототипирования игровых концепций. Unity предоставляет «игровой движок в коробке» — движок физики и рендеринга с хуками для нескольких языков сценариев, адаптируемый практически к любому жанру видеоигр.

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

Unity не сделает эту работу за вас, но она существенно снизит барьер для входа. Начиная с нуля с C ++ и OpenGL, может потребоваться несколько дней, чтобы добраться до точки, где на экране действительно что-то отображается. Использование Unity занимает около десяти секунд. Unity быстро и интуитивно передает основные элементы создания игр начинающим программистам.

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

§1 – Версии единства

§2 – Установка Unity

§3 — краткое введение в объектно-ориентированную парадигму

§4 – Основы единства

§5 – Пример: основные элементы игры

§6 – Сценарии в Unity

§7 – Пример: сценарий понг

§8 — Изучение документации / обучение

§9 — Сборка вашей игры / Компиляция в отдельное приложение

§10-Заключительные заметки

1. Версии единства

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

Тем не менее, для большинства относительно простых игр, которые вы, возможно, захотите собрать, бесплатная версия Unity вполне подходит. Ниже мы рассмотрим основные различия ниже для тех, кто заинтересован.

1.1 Ценообразование

Бесплатная версия Unity, конечно, бесплатна. Однако есть несколько ограничений: бесплатная версия Unity не может быть лицензирована ни одной компании с годовым доходом более $ 100 000. Хотя такие организации выходят за рамки данного руководства, если вы подозреваете, что можете стать такой организацией, возможно, стоит выбрать версию Pro.

Pro версия Unity — это $ 75 месяц или $ 1500 для постоянной лицензии, и не имеет ограничений на то, что вы можете делать с играми, созданными с его помощью. Существует также 30-дневная бесплатная пробная версия, которую мы будем использовать в этом руководстве, чтобы дать вам как можно более полный обзор доступных функций. Студенческая лицензия на один год также доступна через Студику для $ 129.

1.2 Особенности

В бесплатной версии Unity есть множество функций. Однако наиболее важные различия заключаются в следующем: в бесплатной версии Unity отсутствует ряд параметров рендеринга, которые позволяют создавать более качественные и быстро запускающиеся игры (поддержка LOD, пост-обработка пространства экрана, усовершенствованные шейдеры, программные средства реального времени). тени и отложенный рендеринг). Также не хватает полной анимационной системы Mechanim и некоторых инструментов AI.

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

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

2. Установка Unity

Unity прост в установке. Вы можете скачать исполняемый файл с сайта unity3d.com/get-unity/download.

После загрузки запустите его и следуйте инструкциям установщика. Когда установка будет завершена, появится окно под названием «активировать лицензию Unity». Установите флажок «активировать бесплатную 30-дневную пробную версию Unity Pro», а затем «ОК».

Поздравляем! Теперь у вас есть 30-дневная пробная версия Unity Pro. По истечении пробной версии, если вы не хотите покупать профессиональную версию, вы можете перейти на бесплатную версию и сохранить существующий контент.

3. Краткое введение в объектно-ориентированную парадигму

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

Прежде всего, если вы никогда не программировали раньше, отложите это руководство и потратьте несколько дней на изучение Microsoft C # Language Primer, пока не почувствуете себя комфортно в использовании языка для простых задач.

Если вам нужно что-то немного отличающееся от C # (но не обязательно язык, который вы можете использовать в Unity), тогда взгляните на наше руководство по шести самым простым языкам программирования для начинающих

,

Если вы программировали ранее на императивном или объектно-ориентированном языке, таком как C или Java, изучите учебник и ознакомьтесь с тем, как C # отличается от других языков, которые вы использовали в прошлом. В любом случае, не переходите к учебнику, пока не почувствуете себя комфортно при решении простых проблем с C # (например, если бы я попросил вас написать программу, которая печатает первые сто простых чисел, вы должны быть в состоянии написать эту программу без консалтинг гугл).

Самая важная концепция для понимания — это объектно-ориентированная парадигма.

(сокращенно как OOP). В объектно-ориентированных языках программы делятся на функциональные единицы, называемые Объекты. Каждый объект имеет свои личные переменные и функции. Объектно-специфические функции называются методы.

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

Объекты создаются из классыКласс — это просто файл, в котором содержится определение вашего объекта. Итак, если вы хотите Мук объект, который обрабатывает AI для врага в вашей игре, вы бы написали класс «Mook», а затем прикрепили этот файл к каждой вражеской сущности. Когда вы запустите свою игру, каждый враг будет снабжен копией объекта «Mook».

Присоединение нового сценария к объекту выглядит следующим образом:

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

  1. Создать сущность, которая будет выполнять роль в игре (пусто GameObjects может использоваться для абстрактных логических задач).
  2. Напишите или найдите файл класса и добавьте его к объекту в виде сценария (используя Добавить компонент кнопка в инспектор Посмотреть.
  3. Бежать > тестовое задание > отлаживать > повторение пока не сработает и перейдите к следующему элементу игры.

Unity поставляется с множеством основных вкладок, которые могут быть разложены по вкусу пользователя. Большая пятерка:

  1. Игра: отображает запущенный экземпляр игры, с которым вы можете взаимодействовать и тестировать.
  2. Сцена: предоставляет статическую, редактируемую версию Мир игры.
  3. Инспектор: позволяет изменять отдельные объекты в игровом мире, выбирая их в редактор Вкладка.
  4. Проект: позволяет просматривать файлы проекта и перетаскивать модели, материалы и другие ресурсы в редактор вкладка, чтобы разместить их в игровом мире.
  5. Иерархия: эта вкладка показывает все объекты в мире, позволяя вам находить удаленные объекты на сцене и родительские объекты друг к другу, щелкая и перетаскивая.

Смотрите схему ниже для определения местоположения всех этих вещей:

4.1.1 Сетки

Сетки — это путь 3D геометрия представлен в Unity. Вы можете использовать встроенный в Unity примитивный объекты (кубы, сферы, цилиндры и т. д.) или импортируйте свои собственные 3D-модели из пакета моделирования, такого как Blender

или майя

, Unity поддерживает различные форматы 3D, в том числе .FBX, а также .3ds.

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

4.1.2 Элементы GUI

Традиционные графические спрайты и текст могут отображаться с помощью GUI Text и Текстура GUI GameObjects в редакторе. Однако более надежным и реалистичным способом обработки элементов пользовательского интерфейса является использование 3D текст а также Quad GameObjects (с прозрачными текстурами и неосвещенным прозрачным шейдером) для размещения элементов HUD в игровом мире в виде сущностей.

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

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

4.1.3 Материалы

Материалы — это комбинации текстур и шейдеров.

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

Чтобы импортировать текстуру, преобразуйте ее в .JPG, .PNG, или же .ВМР, и перетащите его в активы папка в каталоге проекта Unity (который появляется в Мои документы по умолчанию). Через несколько секунд в редакторе появится панель загрузки. Когда он закончится, вы сможете найти изображение в качестве текстуры под проект Вкладка.

4.1.5 Огни

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

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

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

Три основных вида света место, точка, а также направленный.

Точечные светильники иметь местоположение в трехмерном пространстве и проецировать свет только в одном направлении в конусе переменного угла. Они хороши для фонариков, прожекторов и, в целом, дают вам более точное управление освещением. Точечные светильники могут отбрасывать тени.

Точечные светильники иметь местоположение в трехмерном пространстве и освещать равномерно во всех направлениях. Точечные светильники не отбрасывают тени.

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

4.1.6 Системы частиц

Система частиц это GameObject который генерирует и контролирует сотни или тысячи частиц одновременно. Частицы — это небольшие оптимизированные 2D-объекты, отображаемые в 3D-пространстве. Системы частиц используют упрощенный рендеринг и физику, но могут отображать тысячи объектов в режиме реального времени без заиканий, что делает их идеальными для дыма, огня, дождя, искр, магических эффектов и многого другого.

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

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

5. Пример: основные элементы игры

Для этого урока мы собираемся сделать простую игру в понг — то, что мы уже несколько раз освещали в DIY:

  • Arduino Classic Pong
  • Arduino OLED Pong

В этом разделе мы рассмотрим расположение основных элементов — руководство по написанию сценариев появится позже.

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

Это разбивается на шаровой объект (сфера), а рыба-самка, два гребных упора с излучатели частиц прилагается 3D-текстовая сущность, и прожектор. Для этого урока мы будем использовать физический материал по умолчанию подпрыгивать, с отказов комбайн установлен в умножать. Вот как выглядит установка на десяти скриншотах:

Когда у вас есть скрипт, прикрепленный к объекту, вы можете изменить его, дважды щелкнув по нему в инспектор. Это открывает MonoDevelop, среду разработки по умолчанию для Unity. По сути, Monodevelop — это текстовый редактор с функциями, специально оптимизированными для программирования.

Ключевые слова и комментарии выделены в синий а также зеленый, и числовые значения и строки появляются в красный. Если вы использовали Eclipse или другие IDE, MonoDevelop очень похож. Вы можете строить ваши скрипты из редактора, чтобы проверить синтаксические ошибки, например так:

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

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

В приведенных выше примерах именованные переменные имеют типы, указанные в именах. Здесь есть несколько ключевых деталей: положение и масштаб, как и следовало ожидать, сохраняются как Vector3s. Вы можете получить доступ к Икс, Y, а также Z компоненты каждого (например, transform.position.y дает вам расстояние объекта выше нулевой плоскости).

Однако, чтобы избежать блокировки карданного подвеса, вращения обрабатываются как Кватернионы (четырехкомпонентные векторы). Поскольку ручные манипуляции с кватернионами не интуитивны, вы можете манипулировать вращениями, используя эйлеровы углы, используя Quaternion.Euler метод вроде так:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

Если вы хотите плавно перемещать объекты из одного места в другое, вы найдете Slerp полезен метод для кватернионов и векторов. Slerp принимает три аргумента — текущее состояние, конечное состояние и скорость изменения и плавно интерполирует между ними с заданной скоростью. Синтаксис выглядит так:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

6.2 Рендерер

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

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

Большинство из них имеют довольно четкие функции. Первый пример делает рассматриваемый объект невидимым: полезная уловка в ряде ситуаций. Второй пример назначает новый Цвет RGB (а именно, зеленый) к рассматриваемому объекту. Третий назначает основную диффузную текстуру новой переменной текстуры. В последнем примере шейдер материала объекта изменяется на вновь определенную переменную шейдера.

6.3 Физика

Unity поставляется с интегрированным физическим движком — то, что физические игры песочницы

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

Все физические реквизиты требуют коллайдеров. Однако фактическое моделирование само по себе обрабатывается жесткое тело, которые могут быть добавлены в инспектор Посмотреть. Твердые антитела могут быть кинематический или же nonkinematic.

Кинематические реквизиты физики сталкиваются (и воздействуют) на некиматические физики вокруг них, но сами столкновения не затрагивают их. Статические кинематические опоры — это общеизвестные неподвижные объекты, а движущиеся кинематические объекты — пресловутая непреодолимая сила (для примера, когда они сталкиваются, они просто проходят друг через друга).

Кроме того, вы можете отрегулировать угловое сопротивление объекта (сколько энергии требуется для его вращения), изменить его массу, указать, влияет ли на него гравитация, и применить к нему силы.

Примеры:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

Все это довольно очевидно. Единственное, что следует отметить здесь, это использование transform.forward. У Vector3 есть три компонента (.вперед, .вверх, а также .право) связанные с ними, которые могут быть доступны и вращаться вместе с ними (вперед это направление синей стрелки в редакторе). transform.forward Ключевое слово — это просто прямой вектор для текущего объекта с магнитудой 1. Его можно умножить на число с плавающей точкой, чтобы создать больше силы для объекта. Вы также можете ссылаться transform.up а также transform.right, и отрицать их, чтобы получить их обратное.

6.4 Столкновение

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

Для обнаружения коллизий в Unity требуется определенная подготовительная работа. Во-первых, по крайней мере один из объектов в столкновении нуждается в не кинематическое твердое тело прикреплен к нему. Оба объекта должны иметь правильные коллайдеры, которые должны быть не триггерами. Общая скорость обоих объектов должна быть достаточно низкой, чтобы они фактически сталкивались, вместо того, чтобы просто пропускать друг друга.

Если вы позаботились обо всем этом, вы можете проверить наличие столкновений, поместив специальный метод обнаружения столкновений в скрипт, прикрепленный к объекту, с которым вы хотите проверить столкновение. Метод будет выглядеть так:

void OnCollisionEnter(Collision other) {
//do things here
}

Этот метод будет автоматически запускаться во время первого кадра, когда другой объект касается вашего объекта. Объект столкновения Другой является ссылкой на объект, который вы ударили. Вы можете, например, ссылаться на его геймобжекты, жесткое тело, а также преобразование характеристики манипулировать им различными способами. В то время как OnCollisionEnter это, вероятно, самая распространенная функция, которую вы будете использовать, вы также можете использовать OnCollisionExit а также OnCollisionStay (с другим идентичным синтаксисом и использованием), которые активируются в течение первого кадра, в котором вы прекращаете столкновение с объектом, и во время каждого кадра, в котором вы сталкиваетесь с объектом, соответственно.

Иногда также может быть полезно сделать то, что называется raycasting. В радиовещании бесконечно тонкая линия ( луч) проходит через мир из некоторого источника, по какому-то вектору, и, когда он попадает во что-то, возвращается позиция и другие детали первого столкновения. Код для raycast выглядит так:

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

Это отбрасывает луч из позиции текущего объекта вдоль -Vector3.up (вниз) и связывает переменную удар с первым объектом, с которым он сталкивается. Как только ваш луч что-то ударил, вы можете получить доступ hit.distance чтобы определить, насколько это далеко, или hit.GameObject манипулировать объектом, который вы ударили.

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

6.5 Коррекция времени

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

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

6.6 Источники звука и слушатели

Теперь, когда мы рассмотрели, как создавать, визуализировать и управлять объектами, давайте поговорим о другом смысле, который могут служить компьютерным играм: звук. Unity поддерживает два вида звуков: 2D а также 3D звуки. 3D-звуки изменяют свою громкость в зависимости от расстояния и искажают, когда они движутся относительно камеры; 2D звуки нет.

2D-звуки подходят для наложения голоса и фоновой музыки, а 3D-звуки применяются к звукам, генерируемым событиями в мире. Чтобы изменить, является ли звук трехмерным, выберите его в проект просмотреть, переключиться на инспектор выберите и выберите соответствующую опцию в раскрывающемся меню, затем нажмите реимпорт кнопка.

Для того, чтобы действительно воспроизвести звук, вам нужно AudioSource на опору (опору, из которой вы хотите, чтобы звук исходил, в случае трехмерного звука). Тогда вам нужно открыть AudioClip поле и выберите свой звуковой файл.

Ты можешь использовать myAudioSource.Pause () а также myAudioSource.Play () контролировать эти звуковые файлы. Вы можете настроить поведение при падении, громкость и доплеровское смещение звуков под инспектор Вкладка для аудио источника.

6.7 Ввод

Игра, которая не требует ввода информации от пользователя, не является большой частью игры. Есть много разных видов ввода, которые вы можете прочитать, и почти все они доступны через вход а также Ключевой код объекты. Некоторые примеры операторов ввода (значения которых оцениваются в каждом кадре) приведены ниже.

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

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

6.8 Отладка скрипта

Допустим, скрипт не работает. Как говорит хороший доктор, с вами может случиться бангпс и хангпс. Если в вашем C # есть прямые синтаксические ошибки, игра, как правило, откажется запускаться, когда вы нажмете на игру, и если вы строить скрипты из редактора. Увидеть ниже:

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

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

BallHandler.cs

Далее нам нужно написать скрипт нашего весла, который вы можете посмотреть ниже. Весло должно перемещаться вверх и вниз в ответ на нажатия клавиш (но не вне определенных границ). Это также должно вызвать систему частиц, когда она сталкивается с чем-то.

PaddleHandler.cs

Далее, нам нужен вражеский ИИ: то, что заставит вражеское весло двигаться по направлению к мячу с фиксированной скоростью. Для этого мы будем использовать Vector3.Slerp для максимальной простоты. Нам также понравилось бы то же поведение частиц, которое мы видим на нашем собственном весле.

EnemyAI.cs

Наконец, нам нужен скрипт для обновления табло и сброса мяча, когда он выходит за пределы поля.

ScoreboardUpdater.cs

С этими прилагаемыми сценариями и заполненными ссылками, когда мы запускаем нашу игру Pong, мы испытываем игровой процесс!

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

Важнейшим ресурсом здесь является Unity ScriptReference. ScriptReference — это база данных с возможностью поиска, доступная как для C #, так и для Javascript, которая содержит список всех команд и функций Unity с описанием их функций и краткими примерами синтаксиса.

Если у вас возникли проблемы с редактором и интерфейсом Unity, или вам просто нравятся видеоуроки в порядке предпочтения, существует длинный список высококачественных видеоуроки Unity. Более обширные (но менее обширные) текстовые учебники по Unity также доступны от CatLikeCoding.

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

9. Сборка вашей игры / Компиляция в отдельное приложение

Когда вы создали что-то, чем вы гордитесь (или вы закончили клонирование нашего слегка изворотливого примера Pong для практики), пришло время вывести вашу игру из редактора и превратить ее в то, что вы можете опубликовать в Интернете и заставить ваши друзья и семья, чтобы играть. Для этого вам необходимо создать отдельное приложение. Хорошей новостью является то, что в Unity это очень легко. Однако, есть несколько потенциальных икотов, о которых вы бы хотели позаботиться.

Для начала знайте, что вы можете построить только безошибочный проект. Для этого убедитесь, что при сборке у вас открыта консоль: существуют некоторые ошибки, которые игра будет игнорировать в редакторе, но все равно будет прервать попытку сборки. Это только выводит сообщения об ошибках в консоль, без видимых результатов на экране, что может расстраивать, если вы забудете проверить. Как только вы получите безошибочную компиляцию игры, вы можете выбрать Настройки сборки под файл меню или нажмите Ctrl > сдвиг
> В. Это откроет простой диалог, который позволит вам построить свою игру для нескольких платформ.

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

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

Этот урок дает вам хорошую стартовую площадку, но лучший способ изучить Unity — создать игру. Начните строить игру, восполните пробелы в своих знаниях по мере их появления, и постепенный поток знаний разрушит то, что вы не знаете, на удивление быстро.

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

,

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

Ссылка на основную публикацию
Adblock
detector