Реклама
Удивительной особенностью интернет-экономики является рост числа независимых видеоигр. Когда-то это был эксклюзивный домен студий с тремя миллионами долларов и многомиллионным, был разработан ряд наборов инструментов, которые Предоставить современные ресурсы для разработки игр отдельным людям или небольшим специальным коллекциям программистов и дизайнеров. Мы ранее обсуждали лучшие инди-игры 10 Инди-игр настолько хороши, вы забудете, что они вообще индиОднако могут быть случаи, когда вы хотите что-то отличное от инди-нормы. Игра, которая следует за инди-ценностями, но сделана с качеством, которым славятся лучшие игры AAA. Титулы, как ... Прочитайте больше , поэтому убедитесь, что вы проверяете их на предмет вдохновения относительно того, чего можно достичь с помощью таких инструментов, как Unity.
Эти инди-команды разработчиков игр продемонстрировали гибкость и толерантность к риску, что во многих случаях позволяет им продвигать инновации в игровом процессе быстрее, чем их большие бюджетные аналоги. В последние годы состоялось премьера ряда поразительно успешных инди-игр, в том числе Шахтерское ремесло, Limbo, и Супер мясной пареньи даже если вам не нужны навыки, чтобы делать такие игры, вы можете создать игру, используя Buildbox Как сделать видеоигру за неделю с помощью BuildboxСуществует программа, которая делает разработку игр невероятно легкой даже для тех, кто не имеет никакого опыта в разработке видеоигр. Это называется Buildbox. Вот почему вы должны попробовать это. Прочитайте больше .
В стремительно развивающемся ландшафте разработки инди-игр, Единство стал стандартом де-факто: его низкая стоимость, простота использования и широкий набор функций делают его идеальным для быстрой разработки игр. Единство настолько гибко, что вы можете даже сделать свои собственные игровые контроллеры Как сделать собственный игровой контроллер с Arduino и UnityВы когда-нибудь хотели создать свой собственный игровой контроллер? Это проще, чем вы думаете! Прочитайте больше с небольшим количеством DIY знаю, как!
Даже крупные студии, такие как CCP (Разработчики Ева Онлайн) использовать его для быстрого прототипирования игровых концепций. 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-дневная бесплатная пробная версия, которую мы будем использовать в этом руководстве, чтобы дать вам как можно более полный обзор доступных функций. Годовая студенческая лицензия также доступна через Studica за $129.
1.2 Особенности
В бесплатной версии Unity много функций. Однако наиболее важные различия заключаются в следующем: в бесплатной версии Unity отсутствует ряд параметров рендеринга, которые позволяют более качественные и быстро запускающиеся игры (поддержка LOD, постобработка пространства экрана, улучшенные шейдеры, мягкие тени в реальном времени и отложенные рендеринг). Также не хватает полного Механим анимационная системаи некоторые инструменты AI.
В общем, для сложных, масштабных проектов или проектов, где важна графическая производительность, профессиональная версия имеет смысл. Я использую профессиональную версию, потому что я разрабатываю игры виртуальной реальности для Oculus Rift Обзор Oculus RiftВиртуальная реальность не нова, но она, наконец, доступна и доступна нам. После четырех лет и двух опытных образцов пришла финальная версия Oculus Rift. Прочитайте больше и поддержка постобработки экранного пространства необходима для правильного взаимодействия с гарнитурой.
2. Установка Unity
Unity прост в установке. Вы можете скачать исполняемый файл с unity3d.com/get-unity/download.
После загрузки запустите его и следуйте инструкциям установщика. Когда установка будет завершена, появится окно с заголовком «активировать лицензию Unity». Установите флажок «активировать бесплатную 30-дневную пробную версию Unity Pro», а затем «ОК».
Поздравляем! Теперь у вас есть 30-дневная пробная версия Unity Pro. По истечении пробного периода, если вы не хотите покупать профессиональную версию, вы можете перейти на бесплатную версию и сохранить существующий контент.
3. Краткое введение в объектно-ориентированную парадигму
Прежде чем начать работу с Unity, важно немного разобраться с основами. Unity поддерживает оба C # и JavaScript за программирование игр 7 языков разработки игр Unity для изучения: что лучше?Хотите начать разработку игр в Unity? Вам понадобится знакомство с одним из этих Unity-совместимых языков. Прочитайте больше ; мы будем работать с C # для этого урока.
Прежде всего, если вы никогда не программировали раньше, отложите это руководство и потратьте несколько дней на работу с Microsoft. C # Language Primer пока вы не чувствуете себя комфортно, используя язык для простых задач.
Если вам нужно что-то немного отличающееся от C # (но не обязательно язык, который вы можете использовать в Unity), тогда посмотрите наше руководство по шесть самых простых языков программирования для начинающих 6 самых простых языков программирования для начинающихОбучение программированию - это поиск правильного языка так же, как и процесс назидания. Вот шесть самых простых языков программирования для начинающих. Прочитайте больше .
Если вы программировали ранее на императивном или объектно-ориентированном языке, таком как C или Java, изучите учебник и ознакомьтесь с тем, как C # отличается от других языков, которые вы использовали в прошлом. В любом случае, не продолжайте обучение, пока не почувствуете себя комфортно при решении простых проблем с C # (например, если бы я спросил Вы должны написать программу, которая печатает первые сто простых чисел, вы должны быть в состоянии написать эту программу без консультации Google).
Самая важная концепция для понимания здесь объектно-ориентированная парадигма Откуда "объектно-ориентированное" программирование получило свое название?Object Oriented - это не случайное модное слово, которое вы слышите в кругах программистов. Есть причина за имя - но что? Присоединяйтесь ко мне, чтобы изучить некоторые основы программирования и объяснить ... Прочитайте больше (сокращенно как OOP). В объектно-ориентированных языках программы делятся на функциональные единицы, называемые Объекты. Каждый объект имеет свои частные переменные и функции. Объектно-специфические функции называются методы.
Идея здесь заключается в модульности: изолируя каждый объект и заставляя другие объекты взаимодействовать с ним с помощью его методов вы можете уменьшить количество возможных непреднамеренных взаимодействий и, соответственно, ошибок. Вы также можете создавать объекты, которые вы можете использовать позже без изменений. В Unity вы будете строить эти объекты и прикреплять их к игровые объекты (чьим поведением они будут управлять).
Объекты создаются из классыКласс - это просто файл, в котором содержится определение вашего объекта. Итак, если вы хотите Мук объект, который обрабатывает AI для врага в вашей игре, вы должны написать класс «Mook», а затем прикрепить этот файл к каждому объекту противника. Когда вы запустите свою игру, каждый враг будет снабжен копией объекта «Mook».
Присоединение нового сценария к объекту выглядит следующим образом:
Первый, выберите объект и перейти к Инспектор. Нажать на Добавить компонент кнопка.
Перейти к новый скриптвведите желаемое имя и нажмите создать и добавить.
Теперь у вас есть новый скрипт, который вы можете редактировать, дважды щелкнув по нему!
Файл класса выглядит примерно так:
используя UnityEngine; открытый класс Mook: MonoBehaviour {частное здоровье поплавка; void Start () {health = 100; } void Update () {if (health> 0) {/ * Поиск игрока, если вы столкнулись с игроком на дороге, убейте его, если вы получите выстрел, удалите случайное количество здоровья * /}} }
Давайте разберемся с этим:
- Использование UnityEngine: Эта строка говорит C #, что мы хотим использовать библиотеки Unity, которые позволяют нам подключаться к игровому движку Unity.
- Публичный класс Mook: MonoBehaviour:Эта строка объявляет класс и его имя - Мук.
- Частный поплавок здоровья: Это объявляет закрытую переменную класса (которая может быть изменена только внутри класса). Переменная имеет значение в Начните.
- Void Start (): Это объявляет метод с именем Начните. Запуск - это специальный метод, который запускается только один раз, когда игра запускается изначально.
- Void Update (): Обновление - это еще один специальный метод, который выполняется на каждом кадре. Большая часть вашей игровой логики пойдет сюда.
- // если вы встретите игрока на дороге, убейте его: Эта строка является комментарием (любая строка, начинающаяся с двойной косой черты, игнорируется C #). Комментарии используются, чтобы напомнить себе о том, что делают конкретные биты кода. В этом случае этот комментарий используется для обозначения более сложного блока кода, который фактически выполняет то, что описывает комментарий.
Вместе с Начните и ОбновитьВы можете создавать свои собственные методы с практически любым именем. Однако созданные вами методы не будут выполняться, если они не будут вызваны. Давайте объявим метод для гипотетического класса addTwoNumbers это добавляет два числа вместе:
public float addTwoNumbers (float a, float b) {return a + b; }
Это объявляет открытый (доступный для других объектов) метод, который возвращает float, называемый addTwoNumbers, который принимает два числа с плавающей точкой на входе (называется и б). Затем он возвращает сумму двух значений в качестве своего вывода.
Вызов этого метода из одного класса (скажем, изнутри Обновить) выглядит так:
результат с плавающей запятой = addTwoNumbers (1, 2);
Вызов метода из другого класса похож:
экземпляр addTwoNumbers; результат с плавающей точкой = instance.addTwoNumbers (1, 2);
Опять же, это просто создает экземпляр нашего класса, обращается к соответствующему методу и передает ему числа, которые мы хотим добавить, а затем сохраняет результат в результат. Просто.
Если ваш скрипт привязан к объекту со специальными свойствами (например, к эмиттеру частиц), доступ к которому невозможен в обычном наборе параметров GameObject вы можете использовать его как игровой объект другого типа, используя GetComponent метод.
Синтаксис для этого выглядит следующим образом:
GetComponent().Играть();
Если что-то из этого вам незнакомо, вернитесь назад и пройдите учебник по C #. Это избавит вас от многих разочарований, когда мы начнем.
4. Основы единства
В этом разделе мы собираемся проработать основы механики движка Unity. Рабочий процесс в Unity выглядит примерно так:
- Создать объект, который будет выполнять роль в игре (пусто GameObjects может быть использован для абстрактных логических задач).
- Напишите или найдите файл класса и добавьте его к объекту в виде сценария (используя Добавить компонент кнопка в инспектор Посмотреть.
- Пробег > контрольная работа > отлаживать > повторение пока не сработает и перейдите к следующему элементу игры.
Unity поставляется с несколькими основными вкладками, которые могут быть разложены по вкусу пользователя. Большая пятерка:
- Игра: отображает запущенный экземпляр игры, с которым вы можете взаимодействовать и тестировать.
- Сцена: предоставляет статическую, редактируемую версию Мир игры.
- Инспектор: позволяет изменять отдельные объекты в игровом мире, выбирая их в редактор Вкладка.
- Проект: позволяет просматривать файлы проекта и перетаскивать модели, материалы и другие ресурсы в редактор вкладка, чтобы разместить их в игровом мире.
- Иерархия: эта вкладка показывает все объекты в мире, позволяя вам находить удаленные объекты на сцене и родительские объекты друг к другу, щелкая и перетаскивая.
Смотрите схему ниже для определения местоположения всех этих вещей:
4.1 Сущности Единства
4.1.1 Сетки
Сетки - это путь 3D геометрия представлен в Unity. Вы можете использовать встроенный в Unity примитивный объекты (кубы, сферы, цилиндры и т. д.) или импортируйте свои собственные 3D-модели из пакета моделирования, например смеситель Начало работы с Blender: 7 фантастических уроков для новичков3D-моделирование - это отличный способ проявить креативность, не отрываясь от своей технической стороны. Вот несколько замечательных бесплатных уроков. Прочитайте больше или майя Изучение майя 2016: с чего начатьMaya - это инструмент, используемый для 3D-анимации, но он имеет невероятно крутой курс обучения. Какой хороший учебный материал есть? Прочитайте больше . Unity поддерживает различные форматы 3D, в том числе .fbx, и .3ds.
Основными инструментами для работы с сеткой являются кнопки масштабирования, поворота и перемещения в левом верхнем углу интерфейса. Эти кнопки добавляют значки управления к моделям в представлении редактора, которые затем можно использовать для управления ими в пространстве. Чтобы изменить текстурные или физические свойства объекта, выберите их и используйте инспектор посмотреть, чтобы проанализировать материал и жесткое тело элементы.
4.1.2 Элементы GUI
Традиционные графические спрайты и текст могут отображаться с помощью GUI Text и Текстура GUI GameObjects в редакторе. Однако более надежным и реалистичным способом обработки элементов пользовательского интерфейса является использование 3D текст и Quad GameObjects (с прозрачными текстурами и неосвещенным прозрачным шейдером) для размещения элементов HUD в игровом мире в виде сущностей.
в иерархия Эти элементы игрового процесса можно перетаскивать на основную камеру, чтобы сделать их детьми, обеспечивая их перемещение и вращение вместе с камерой.
Элементы графического интерфейса (текст и текстуры) можно настроить по размеру и масштабу с помощью соответствующих полей на вкладке инспектора.
4.1.3 Материалы
Материалы представляют собой комбинации текстур и шейдеры Пять важных игровых терминов для ПКЕсли вы играете в игру на консоли, технические детали обрабатываются для вас. Некоторые игроки предпочитают это, но геймеры ПК часто пользуются большей степенью контроля над игровым взором ... Прочитайте больше и может быть перетащен непосредственно на игровые объекты из вкладки проекта. Unity Pro поставляется с большим количеством шейдеров, и вы можете настроить прикрепленную к ним текстуру, используя вкладку инспектора для объекта, к которому они применяются.
Чтобы импортировать текстуру, преобразуйте ее в .jpg, .png, или .bmpи перетащите его в активы папка в каталоге проекта Unity (который появляется в Мои документы по умолчанию). Через несколько секунд в редакторе появится панель загрузки. Когда он закончится, вы сможете найти изображение в качестве текстуры под проект Вкладка.
4.1.5 Огни
Огни GameObjects какой проект сияние на мир. Если в вашей сцене нет источников света, все многоугольники нарисованы с одинаковым уровнем яркости, что придает миру плоский размытый вид.
Светильники могут быть расположены, повернуты и иметь несколько внутренних характеристик, которые вы можете настроить. интенсивность ползунок управляет яркостью света, а диапазон контролирует, как быстро он исчезает.
Руководящие принципы в вид сцены показать вам максимальную дальность освещения. Поиграйте с обоими настройками, чтобы добиться желаемого эффекта. Вы также можете настроить цвет света, рисунок (печенье отображаемый на поверхности свет, на который указывает источник света, и какая вспышка появляется на экране, если смотреть прямо на источник света. Cookie можно использовать для имитации более реалистичных световых моделей, создания драматических ложных теней и моделирования проекторов.
Три основных вида света пятно, место, точка, и направленный.
Точечные светильники располагаться в трехмерном пространстве и проецировать свет только в одном направлении в конусе с переменным углом. Они хороши для фонарей, прожекторов и, в целом, дают вам более точное управление освещением. Точечные светильники могут отбрасывать тени.
Точечные светильники иметь местоположение в трехмерном пространстве и освещать равномерно во всех направлениях. Точечные светильники не отбрасывают тени.
Направленные огнинаконец, используются для имитации солнечного света: они излучают свет в бесконечном направлении. Направленные источники света воздействуют на каждый объект в сцене и могут создавать тени.
4.1.6 Системы частиц
Система частиц это GameObject который генерирует и контролирует сотни или тысячи частиц одновременно. Частицы - это небольшие оптимизированные 2D-объекты, отображаемые в 3D-пространстве. Системы частиц используют упрощенный рендеринг и физику, но могут отображать тысячи объектов в режиме реального времени без заиканий, что делает их идеальными для дыма, огня, дождя, искр, магических эффектов и многого другого.
Есть много параметров, которые вы можете настроить для достижения этих эффектов, и вы можете получить к ним доступ, порождая систему частиц под редактор компонентов > выбор системы частиц > открытие вкладки инспектора. Вы можете изменить размер, скорость, направление, вращение, цвет и текстуру каждой частицы, а также настроить большинство этих параметров, чтобы они менялись со временем.
Под столкновение атрибут, если вы включите его и установите пространство моделирования Мир вы получите частицы, которые будут сталкиваться с объектами в мире, которые могут быть использованы для ряда реалистичных эффектов частиц, включая дождь, движущуюся воду и искры.
5. Пример: основные элементы игры
Для этого урока мы собираемся сделать простую игру Pong - то, что мы уже несколько раз освещали в DIY:
- Arduino Classic Pong Как воссоздать классическую игру в понг с помощью ArduinoПонг был первой видеоигрой, которая достигла массового рынка. Впервые в истории концепция «видеоигры» была внедрена в семейный дом благодаря Atari 2600 -... Прочитайте больше
- Arduino OLED Pong Arduino Retro Gaming с OLED-дисплеемКогда-нибудь задумывались, сколько работы нужно, чтобы написать свои собственные ретро-игры? Насколько легко Понг кодировать для Arduino? Прочитайте больше
В этом разделе мы рассмотрим расположение основных элементов - руководство по написанию скриптов появится позже.
Во-первых, давайте разберем игру понг на ее основные компоненты. Во-первых, нам нужны два весла и мяч. Мяч летит за пределы экрана, поэтому нам нужен механизм для его сброса. Мы также хотим, чтобы текст отображал текущий счет, и, чтобы показать вам все основные элементы Unity, нам понадобится эффект причудливых частиц, когда вы будете отбивать мяч. Вся игра должна быть резко освещена.
Это разбивается на шаровой объект (сфера), а рыба-самка, два подпорки с излучатели частиц прилагается, 3D-текстовая сущностьи прожектор. В этом уроке мы будем использовать физический материал по умолчанию подпрыгивать, с отказов комбайн установлен в умножить. Вот как выглядит установка на десяти скриншотах:
Сначала создайте куб опора для весла.
Масштабируйте его соответствующим образом, продублируйте этои положить сфера между веслами для мяча.
Затем создайте 3DText объект и масштаб и должность это правильно, меняя размер шрифта атрибут, чтобы получить менее пиксельное изображение.
Далее создайте два системы частицвыберите нужные характеристики и прикрепите их к веслам.
Далее вы захотите позиционировать и вращать камеру так, чтобы она правильно обрамляла сцену. Когда камера выбрана, вы можете увидеть небольшой предварительный просмотр вида камеры в правом нижнем углу.
Прежде чем мы закончим, нам нужно создать два дополнительных куба, которые будут бамперами, чтобы предотвратить отскок мяча от игровой зоны. Мы можем сделать их невидимыми, сняв рендерер сетки в вкладка инспектора.
Если вы нажмете «Играть», теперь вы можете увидеть основные элементы нашей игры. Они пока ничего не сделают, но мы доберемся до этого!
Теперь, когда у нас есть такая настройка, мы поговорим о том, что включает в себя создание сценариев этих элементов для создания игры.
6. Сценарии в Unity
Когда у вас есть скрипт, прикрепленный к объекту, вы можете изменить его, дважды щелкнув по нему в инспектор. Это открывает MonoDevelopсреда разработки по умолчанию для Unity. По сути, Monodevelop - это текстовый редактор с функциями, специально оптимизированными для программирования.
Ключевые слова и комментарии выделены в синий и зеленыйи числовые значения и строки появляются в красный. Если вы использовали Затмение или другие IDE, MonoDevelop очень похож. Вы можете строить ваши скрипты из редактора, чтобы проверить синтаксические ошибки, например так:
В общем, чтобы ваш скрипт взаимодействовал с Unity, вам нужно сослаться на элементы, которыми обладает объект, содержащий скрипт (список этих элементов вы можете увидеть под инспектор вкладка, когда соответствующий объект выбран). Затем вы можете вызвать методы или установить переменные для каждого из этих элементов, чтобы внести необходимые изменения.
Если вы хотите, чтобы скрипт на объекте влиял на свойства другого объекта, вы можете создать пустой GameObject переменной в вашем скрипте, и используйте инспектор назначить его другому объекту в сцене.
Список элементов, которые может иметь объект, выглядит следующим образом (взят из представления инспектора одной из наших лопастей в приведенном выше примере):
- преобразование
- Куб (Сетчатый фильтр)
- Box Collider
- Mesh Renderer
На каждый из этих аспектов объекта можно влиять из скрипта. Далее мы рассмотрим, как именно.
6.1 Преобразование
Функции преобразования для GameObject в Unity контролируют физические параметры этого объекта: его масштаб, его должность, и это ориентация. Вы можете получить к ним доступ из скрипта следующим образом:
transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;
В приведенных выше примерах именованные переменные имеют типы, указанные в именах. Здесь есть несколько ключевых деталей: положение и масштаб, как и следовало ожидать, сохраняются как Vector3s. Вы можете получить доступ к Икс, Y, и Z компоненты каждого (например, transform.position.y дает вам расстояние объекта выше нулевой плоскости).
Однако, чтобы избежать замок карданного подвеса, вращения обрабатываются как Кватернионы (четырехкомпонентные векторы). Поскольку ручные манипуляции с кватернионами не интуитивны, вы можете манипулировать вращениями, используя эйлеровы углы, используя Кватернионов. Euler метод вроде так:
transform.rotation = Quaternion. Эйлер (тангаж, рыскание, крен);
Если вы хотите плавно перемещать объекты из одного места в другое, вы найдете 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 поставляется с интегрированным физическим движком - то, что физика песочница игры Smash, Drive & Build: 3 классных симулятора физики Прочитайте больше все используют. Это позволяет вам назначать физические свойства объектов и разрешать детали их моделирования для вас. В целом, вместо того, чтобы пытаться реализовать собственную физику с помощью учебника и системы преобразования, проще и надежнее использовать физический движок Unity в максимально возможной степени.
Все физические реквизиты требуют коллайдеров. Однако фактическое моделирование само по себе обрабатывается жесткое тело, который может быть добавлен в инспектор Посмотреть. Твердые антитела могут быть кинематический или nonkinematic.
Кинематические реквизиты физики сталкиваются (и воздействуют) на некинематические физики вокруг них, но сами столкновения не затрагивают их. Статические кинематические опоры являются общеизвестными неподвижными объектами, а движущиеся кинематические объекты являются пресловутая непреодолимая сила (для записи, когда они сталкиваются, они просто проходят через каждый Другой).
Кроме того, вы можете отрегулировать угловое сопротивление объекта (сколько энергии требуется для его вращения), изменить его массу, указать, влияет ли на него гравитация или применить к нему силы.
Примеры:
hardbody.angularDrag = 0.1f; Hardbody.mass = 100; hardbody.isKinematic = false; hardbody.useGravity = true; жесткое тело. AddForce (transform.forward * 100);
Все это довольно очевидно. Единственное, что следует отметить, это использование transform.forward. У всех Vector3 есть три компонента (.вперед, .up, и .верно) связанные с ними, которые могут быть доступны и вращаться вместе с ними (вперед это направление синей стрелки в редакторе). transform.forward Ключевое слово - это просто прямой вектор для текущего объекта с величиной 1. Его можно умножить на число с плавающей точкой, чтобы создать больше силы на объекте. Вы также можете ссылаться transform.up и transform.rightи отрицать их, чтобы получить их обратное.
6.4 Столкновение
Зачастую при создании игры вы хотите, чтобы столкновение приводило к некоторому изменению состояния в вашем коде, помимо физического моделирования. Для этого вам понадобится метод обнаружения столкновений.
Для обнаружения коллизий в Unity требуется определенная подготовительная работа. Во-первых, по крайней мере один из объектов в столкновении нуждается в не кинематическое твердое тело прикреплен к нему. Оба объекта должны иметь правильные коллайдеры, которые должны быть не триггерами. Общая скорость обоих объектов должна быть достаточно низкой, чтобы они фактически сталкивались, вместо того, чтобы просто пропускать друг друга.
Если вы позаботились обо всем этом, вы можете проверить наличие столкновений, поместив специальный метод обнаружения столкновений в сценарий, прикрепленный к объекту, с которым вы хотите проверить столкновение. Метод будет выглядеть так:
void OnCollisionEnter (Collision other) {// здесь что-то делается. }
Этот метод будет автоматически запускаться во время первого кадра, когда другой объект касается вашего объекта. Объект столкновения Другой является ссылкой на объект, который вы ударили. Вы можете, например, ссылаться на его геймобжекты, жесткое тело, и преобразование характеристики манипулировать им различными способами. Пока OnCollisionEnter это, вероятно, самая распространенная функция, которую вы будете использовать, вы также можете использовать OnCollisionExit и OnCollisionStay (с другим идентичным синтаксисом и использованием), которые активируются в течение первого кадра, в котором вы прекращаете столкновение с объектом, и в течение каждого кадра, в котором вы сталкиваетесь, соответственно.
Иногда также может быть полезно сделать то, что называется raycasting. В радиовещании бесконечно тонкая линия луч) проходит через мир из некоторого источника, по какому-то вектору, и, когда он попадает во что-то, возвращается позиция и другие детали первого столкновения. Код для raycast выглядит так:
RaycastHit ударил; если (физика. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }
Это отбрасывает луч из позиции текущего объекта вдоль -Vector3.up (прямо вниз) и связывает переменную хит с первым объектом, с которым он сталкивается. Как только ваш луч что-то ударил, вы можете получить доступ hit.distance чтобы определить, насколько это далеко, или хит. GameObject манипулировать объектом, который вы ударили.
Подобные радиопередачи могут использоваться стрелками для определения того, на что направлено оружие, или для выбора объектов, когда на них смотрит камера, или для определенных стилей движения.
6.5 Коррекция времени
Когда вы манипулируете объектами таким образом, вы должны иметь в виду один важный фактор, связанный с частота кадров. Независимо от того, насколько тщательно вы оптимизируете, частота кадров всегда будет меняться, и вы не хотите, чтобы скорость вашей игры изменялась соответственно. Если кто-то запускает вашу игру на более быстром компьютере, чем вы его разработали, вам не нужно, чтобы игра работала с двойной скоростью.
Вы можете исправить это путем умножения значений, которые вы используете, на время, необходимое для рендеринга последнего кадра. Это делается с помощью Time.deltaTime. Это эффективно изменяет скорость любой переменной, с которой вы увеличиваете каждый кадр изменить на кадр в изменение в секундуи вам, вероятно, следует внести это изменение в любое значение, которое вы увеличиваете или уменьшаете каждый кадр.
6.6 Источники звука и слушатели
Теперь, когда мы рассмотрели, как создавать, отображать объекты и управлять ими, давайте поговорим о другом смысле, который могут служить компьютерным играм: звук. Unity поддерживает два вида звуков: 2D и 3D звуки. 3D-звуки изменяют свою громкость в зависимости от расстояния и искажают при перемещении относительно камеры; 2D звуки нет.
2D-звуки подходят для наложения голоса и фоновой музыки, а 3D-звуки применяются к звукам, генерируемым событиями в мире. Чтобы изменить, является ли звук трехмерным, выберите его в проект просмотреть, переключиться на инспектор выберите и выберите соответствующую опцию в раскрывающемся меню, затем нажмите реимпорта кнопка.
Чтобы на самом деле воспроизвести звук, вам необходимо AudioSource на опору (опору, из которой вы хотите, чтобы звук исходил, в случае трехмерного звука). Тогда вам нужно открыть AudioClip поле и выберите свой звуковой файл.
Вы можете использовать myAudioSource. Пауза() и myAudioSource. Играть() контролировать эти звуковые файлы. Вы можете настроить поведение при падении, громкость и доплеровское смещение звуков под инспектор Вкладка для аудио источника.
6.7 Ввод
Игра, не требующая участия пользователя, не является большой частью игры. Есть много разных видов ввода, которые вы можете прочитать, и почти все они доступны через вход и Ключевой код объекты. Некоторые примеры операторов ввода (которые имеют значения, оцениваемые в каждом кадре) приведены ниже.
Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Input. GetMouseButton (0); bool isPressingSpace = Input. GetKey (KeyCode. Космос);
Функции этих линий в основном говорят сами за себя. Используя эти три вида входных ссылок, вы можете восстановить схемы управления большинством современных 3D компьютерных игр.
6.8 Отладка скрипта
Допустим, скрипт не работает. Как говорит хороший доктор, с вами может случиться бангпс и хангпс. Если в вашем C # есть прямые синтаксические ошибки, игра, как правило, откажется запускаться, когда вы нажмете на игру, и если вы строить сценарии из редактора. Увидеть ниже:
Эти ошибки, как правило, не самые трудные для исправления. Что может быть более проблематичным, так это тонкие семантические ошибки, в которых вы успешно написали файл, полный допустимого C #, но не тот, который делает то, что вы думали. Если у вас есть одна из этих ошибок, и вы не можете отследить ее, есть несколько вещей, которые вы можете попытаться улучшить.
Первый - приостановить выполнение игры и проверить консоль. Вы можете приостановить игру, нажав на Пауза значок в верхней средней части редактора, а затем выберите приставка со дна окно меню (или нажав Ctrl > сдвиг > С). Даже если ошибок нет, предупреждения могут помочь понять, что может пойти не так.
Если это не работает, вы также можете попытаться получить представление о состоянии вашего скрипта, напечатав состояние внутренних переменных, чтобы проверить, что программа делает то, что, по вашему мнению, она делает. Вы можете использовать Debug. Log (String) выводить содержимое строки на консоль, когда выполнение программы достигает этой строки. В общем, если вы работаете в обратном направлении от того, что, по вашему мнению, должно происходить через то, что должно быть чтобы это произошло, в конце концов вы достигнете точки, когда ваши отладочные отпечатки не будут делать то, что вы ожидаете от них делать. Вот где ваша ошибка.
7. Пример: сценарий понг
Чтобы построить понг, давайте разберем игру на ее основные элементы: нам нужен шар, который рикошетит назад и вперед между веслами при увеличении скорость, нам нужно табло, которое знает, когда шары прошли весла, и нам нужен механизм для перезапуска шара, когда это случается. Хорошим первым шагом будет добавление не кинематического твердого тела к шару, двух кинематических твердых тел к весла, отключить гравитацию для всех из них, и назначить соответствующий физический материал из стандартных активов (подпрыгивать с отказов комбайн установлен в умножить).
Ниже вы можете посмотреть сценарий бала с пояснительными комментариями. Мяч должен выполнить некоторые основные цели: он должен подпрыгивать в сложной схеме, всегда сохраняя движение по обеим осям, и оно должно ускоряться в сложном, но не невозможном темпе по горизонтали направление.
BallHandler.cs
Далее нам нужно написать скрипт нашего весла, который вы можете посмотреть ниже. Весло должно перемещаться вверх и вниз в ответ на нажатия клавиш (но не вне определенных границ). Это также должно вызвать систему частиц, когда она сталкивается с чем-то.
PaddleHandler.cs
Далее, нам нужен вражеский ИИ: то, что заставит вражеское весло двигаться по направлению к мячу с фиксированной скоростью. Для этого мы будем использовать Vector3.Slerp для максимальной простоты. Нам также понравилось бы то же поведение частиц, которое мы видим на нашем собственном весле.
EnemyAI.cs
Наконец, нам нужен скрипт для обновления табло и сброса мяча, когда он выходит за пределы поля.
ScoreboardUpdater.cs
С этими прилагаемыми сценариями и заполненными ссылками, когда мы запускаем нашу игру Pong, мы испытываем игровой процесс!
Вы можете скачать мой понг демоЕсли вы хотите увидеть все, что я изложил в действии. Он работает в системах Windows, Mac и Linux.
8. Изучение документации / обучение
Unity - сложный движок с гораздо большим количеством функций, чем можно было бы описать в руководстве по этому стилю, и прежде чем вы включите широкий спектр (бесплатных и коммерческих) расширений Unity, доступных на интернет. Это руководство даст вам хорошую стартовую площадку для разработки игры, но самообразование является важным навыком в любом деле, и вдвойне здесь.
Важнейшим ресурсом здесь является Unity ScriptReference. ScriptReference - это база данных с возможностью поиска, доступная как для C #, так и для Javascript, которая имеет список каждой команды и функции Unity, с описанием их функций и краткими примерами синтаксис.
Если у вас возникли проблемы с редактором и интерфейсом Unity, или вам просто нравятся видеоуроки в качестве предпочтения, существует длинный список высококачественных Unity видео уроки Лучшие Unity 3D уроки для начинающихХотите разрабатывать игры с Unity, но не знаете с чего начать? Попробуйте один из этих удивительных учебных пособий по Unity 3D сегодня. Прочитайте больше имеется в наличии. Более обширный (но менее широкий) учебные тексты для Unity также доступны от CatLikeCoding.
Наконец, если у вас есть вопросы, выходящие за рамки документации или учебных пособий, вы можете задать конкретные вопросы по адресу ответы. Unity3d.com. Помните, что ответы предоставляются добровольцами, поэтому уважайте их время и сначала поищите в базе данных, чтобы убедиться, что на ваш вопрос еще не ответили.
9. Сборка вашей игры / Компиляция в отдельное приложение
Когда вы создали что-то, чем гордитесь (или закончили клонировать наш слегка изворотливый пример понга для практики), пришло время переместите свою игру из редактора и превратите ее в то, что вы можете опубликовать в Интернете, и заставьте своих друзей и семью играть. Для этого вам нужно создать отдельное приложение. Хорошая новость заключается в том, что в Unity это очень легко. Тем не менее, есть несколько потенциальных икотов, о которых вы бы хотели позаботиться.
Для начала знайте, что вы можете построить только безошибочный проект. Для этого убедитесь, что при сборке у вас открыта консоль: существуют некоторые ошибки, которые игра будет игнорировать в редакторе, но все равно прервет попытку сборки. Это только выводит сообщения об ошибках в консоль, без видимых результатов на экране, что может расстраивать, если вы забудете проверить. Как только вы получите безошибочную компиляцию игры, вы можете выбрать Настройки сборки под файл меню или нажмите Ctrl > сдвиг
> В. Это откроет простой диалог, который позволит вам построить свою игру для нескольких платформ.
Процесс оттуда самоочевиден: выберите ваши варианты и нажмите строить; игра предложит вам каталог для установки и поместит туда каталог с исполняемыми файлами и данными. Эти два файла можно сжать вместе и распространять (просто убедитесь, что вы не берете плату за игру, встроенную в демонстрационную версию Unity, поскольку это нарушает условия обслуживания).
10. Заметки
Как и в любом инструменте разработки игр, ключом к успеху в Unity является итеративная разработка. Вы должны встраивать управляемые приращения - будьте амбициозны, во что бы то ни стало, но будьте амбициозны небольшими порциями эти куски такие, что, даже если вы не достигнете своих конечных амбиций, вы по крайней мере получите последовательный товар.
Получите самые важные элементы в первую очередь: иметь представление о вашей минимально жизнеспособный продуктпростейшая, самая голая вещь, которую вы могли бы создать и при этом чувствовать, что достигли чего-то стоящего. Доберитесь до этого минимально жизнеспособного проекта, прежде чем переходить к большим амбициям.
Этот урок дает вам хорошую стартовую площадку, но лучший способ изучить Unity - создать игру. Начните создавать игру, восполните пробелы в своих знаниях по мере их появления, и постепенный поток знаний разрушит то, что вы не знаете, на удивление быстро.
Если вы все это прочитали и немного перегружены кодированием, необходимым для Unity, обязательно ознакомьтесь с тем, как научиться разработке игр с Unity Learn Unity Learn - самый простой способ освоить разработку игрХотите начать разработку собственных игр? Unity Learn - это лучший и самый простой способ узнать и освоить то, что вам нужно знать. Прочитайте больше а также прочитайте наше руководство по как делать видеоигры без программирования Как сделать видеоигры без программированияХотите сделать видеоигру, но не можете написать код? Затем используйте конструктор видеоигр, который позволяет создавать игры без необходимости кодирования! Прочитайте больше .
Unity - это мощный инструмент, и с небольшим количеством исследований вы сможете создавать впечатляющие проекты с его помощью быстрее, чем вы ожидаете. Дайте нам знать, что вы создали в комментариях ниже - мы хотели бы видеть!
Андре, писатель и журналист, работающий на юго-западе, гарантированно сохраняет работоспособность до 50 градусов по Цельсию и водонепроницаем на глубине до двенадцати футов.