Как сделать ии в юнити

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

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

For documentation on the newest features introduced in 5.3, see What’s New in 5.3 in this Manual.

For information about upgrading your Unity projects from older versions, see the Upgrade Guide in this Manual.

Further sources of information

For further guidance, please see:

Если вы обнаружите, что на ваш вопрос нет ответа в руководстве, пожалуйста, спросите на Unity Answers или на форуме Unity. Вы сможете найти ответ на свой вопрос там.

The Unity Knowledge Base; a collection of answers to questions posed to Unity’s Support teams.

Tutorials; step by step video and written guides to using the Unity Editor.

Unity Ads Knowledge Base; a guide to including ads in your game.

Everyplay documentation; a guide to the Everyplay mobile game replay platform.

Asset Store help; help on Asset Store content sharing.

Known issues

Main.UnityOverview

Working in Unity

A complete introduction to the Unity software.

Main.Unity2D

Unity 2D

All of Unity’s 2D-specific features including gameplay, sprites and physics.

Main.Graphics

Графика

Визуальная сторона Unity, в том числе Камеры и Освещение.

Main.PhysicsSection

Физика

Физика в Unity, в том числе работа с твердыми телами и манипулирование ими в 3D пространстве.

Main.UNet

Networking

How to implement Multiplayer and networking.

Main.ScriptingSection

Скриптинг

Программирование ваших игр с использованием скриптинга в Unity.

Main.Audio

Аудио

Аудио в Unity, в том числе клипы, источники, слушатели, импорт и настройка звука.

Main.AnimationSection

Анимация

Анимация в Юнити.

Main.UISystem

Unity’s UI system.

Main.Navigation

Навигация

Навигация в Unity, в том числе ИИ и поиск пути.

Main.Services

Unity Services

Our Services for making and improving your game.

Main.VROverview

Virtual reality

Integration with VR.

Main.ContributingToUnity

Contributing to Unity

Suggest modifications to some of Unity’s source code.

Main.PlatformSpecific

Особенности платформы

Конкретная информация для многих не-настольных и веб-платформ, поддерживаемых Unity.

Разработка игр на Unity — отличный способ войти в игрострой и начать свой путь в геймдеве. Первые вопросы, которыми задаётся новичок, это как стать разработчиком игр, на что обращать внимание и где учиться.

Мы с факультетом разработки игр на Unity от GeekBrains собрали 20 советов и трюков, которые помогут освоиться в редакторе.

Не используйте Distance() или magnitude в векторах

Для расчёта расстояния между двумя векторами есть метод Distance() и поле magnitude . Но в процессе вычислений они оба используют операцию извлечения квадратного корня, которая является очень ресурсозатратной. Чтобы этого избежать, используйте поле sqrMagnitude . Оно возвращает квадрат расстояния между векторами. Остаётся лишь сравнить его со значением, также возведённым в квадрат.

Математические операции в полях инспектора

В любых числовых полях инспектора можно вводить не только цифры, но и математические выражения. Например 2 / 3 , 0,5 * 7 .

С версии 2021.2.0 Alpha 10 в инспекторе стало ещё больше доступных выражений:

  • sqrt — извлечение квадратного корня;
  • sin / cos / tan — синус/косинус/тангенс значения соответственно;
  • floor — округление значения вниз;
  • ceil — округление значения вверх;
  • round — округление значения к ближайшему целому числу.

Также математические операции можно выполнять с выделением нескольких объектов. Например выражение -=10 отнимет 10 от соответствующей координаты каждого объекта.

Ещё можно распределить координаты случайно или равноудалённо с помощью функций L(N,M) и R(N,M) соответственно, где N и M — минимальное и максимальное значения координат.

Rich Text в консоли

В обучении разработке игр часто упускают возможности кастомизации Unity, которые достаточно обширны. Например во встроенных компонентах текста UI используется форматирование Rich Text. Оно позволяет сделать текст жирным, курсивом, изменять его цвет, размер и даже присваивать материал.

Пример Rich Text в разработке на Unity

Создание элементов меню редактора

Используя атрибут [MenuItem(“My Menu”)] , можно создавать собственные вкладки меню и элементы в них. Требуется импорт пространства UnityEditor .

Код для создания кнопки меню в Unity

Создание дополнительных опций в контекстном меню компонента

Помимо собственных элементов меню можно создавать дополнительные элементы в контекстном меню компонентов. Для этого используется атрибут [ContextMenu(“Name”)] .

Код для созданий дополнительных опций в Unity

Кастомная опция в контекстном меню при разработке игр в Unity

Сохранение изменений компонента в Play Mode

Если в процессе создания игры на Unity внести какие-либо изменения в компонент с запущенной игрой, то эти изменения не сохранятся. Если вы вносили изменения в пределах одного компонента, то все его значения можно скопировать в контекстном меню компонента (Copy Component), а после того, как вы остановите игру, обратно их вставить через то же контекстное меню (Paste Component Values).

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

HideInInspector и SerializeField

Эти два атрибута помогут настроить отображение нужных полей в инспекторе. Если у вас много публичных полей, которые засоряют инспектор, то вы можете скрыть их атрибутом HideInInspector . Если же вам нужно, чтобы приватное поле, которое по-умолчанию не отображается в инспекторе, всё же можно было редактировать, используйте атрибут SerializeField .

Автоматическое создание глубины в изометрических играх

При создании 2D игры с изометрической проекцией вам может понадобиться имитировать глубину сортировкой слоёв спрайтов. То есть тот объект, который находится на заднем плане, должен быть на слой ниже переднего объекта. Если для неподвижных объектов это легко реализовать, просто настроив их слои в компоненте SpriteRenderer , то для подвижных объектов всё немного сложней.

Однако Unity уже позаботились об этом и дали возможность сортировать объекты по слоям, исходя из их координат. Для начала нужно настроить сортировку. Для этого перейдите в Edit→Project Settings→Graphics→Camera Settings. Свойство Transparency Sort Mode выставьте в Custom Axis , а Transparency Sort Axis в (0; 1; 0) . Теперь все объекты, которые будут находится на одном слою, будут автоматически сортироваться исходя из координаты Y. Те, что выше — на задний план, а те, что ниже — на передний.

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

Выполнение кода, не привязанного к объекту

Атрибут метода [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] позволит выполнить код, не привязывая скрипт к какому-либо объекту. В данном случае код вызовется сразу после загрузки сцены.

Структуры и классы

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

Создание подслоёв

Меню слоёв в редакторе Unity

Фокусировка камеры редактора на объекте и следование за ним

Чтобы сфокусироваться камерой редактора на каком-либо объекте, выделите этот объект и нажмите F. Если объект движется и вам нужно, чтобы камера следовала за ним, нажмите F дважды.

Матрица коллизий

В Unity можно определить, какие из объектов будут сталкиваться друг с другом, а какие нет. Делается это через настройку матрицы коллизий. Для этого перейдите в Edit→Project Settings→Physics→Layer Collision Matrix.

Матрица слоёв физики

Если на пересечении двух слоёв убрать галочку, то объекты этих слоёв не будут сталкиваться друг с другом. В данном случае объект слоя Player не будет сталкиваться с другими объектами своего слоя и объектами слоя Walls .

Debug Mode в инспекторе

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

Меню инспектора в редакторе Unity

Пример инспектора с включённым Debug Mode в Unity

Если у компонента есть пользовательский редактор, то он не будет отображаться в в этом режиме — там будут видны только сами поля.

Мониторинг через график

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

Посмотреть график можно, нажав на поле кривой в инспекторе:

Создание графика для отладки игры на Unity

Кеширование объектов

Ещё одна заметка с курсов создания компьютерных игр: старайтесь кешировать все объекты, с которыми вы часто работаете. Например, в скрипте вы часто обращаетесь к какому-либо компоненту через GetComponent . Вместо этого можно создать поле для этого компонента и присвоить его в методе Start . После этого можно будет обращаться напрямую к компоненту через это поле. Такое решение снизит нагрузку, так как операции GetComponent , Find , FindGameObjectsWithTag и т. д. сильно ресурсозатратны.

Создание пресетов для компонентов

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

Кнопка пресетов в компоненте Unity

Меню пресетов, которые помогут облегчить процесс разработки на Unity

Программная пауза

Снова про отладку, которая пригождается и разработчикам игр при обучении, и в дальнейшей работе. Поставить игру на паузу можно не только кнопкой в редакторе, но и через код. Для этого нужно установить поле EditorApplication.isPaused в значение true . Пригодиться это может во время отладки, когда нужно остановить игру прямо после какой-нибудь ошибки, чтобы детальнее её изучить.

Удобный импорт файлов из Photoshop в Unity

Установив пакет 2D PSD Importer, можно упростить процесс переноса изображений во время разработки игры из фотошопа в Unity. Этот пакет принимает файлы с расширением .psb . При импорте такого файла он автоматически создаёт в объекте все дочерние изображения, которые соответствуют слоям из фотошопа. Также он создаёт группу объектов с отсортированными по слоям компонентами SpriteRenderer .

Примечание Чтобы установить пакет, перейдите в Package Manager. В открывшемся окне в поле поиска введите имя нужного пакета. Выберите пакет и нажмите внизу кнопку Install.

Конечно, это далеко не все хитрости. Но уже с ними вы сможете облегчить себе процесс разработки. А узнать ещё больше фишек и профессионально освоить разработку игр на Unity можно на Факультете разработки игр от GeekBrains, где опытные преподаватели научат вас создавать игры с нуля и в том числе разберут особенности различных инструментов. Первые 6 месяцев обучения бесплатно.

Unity – одна из самых популярных платформ для создания игр, а также приложений дополненной и виртуальной реальности. Вы точно слышали о таких продуктах, как Rust, PokemonGo или Firewatch. Они стали культовыми и создавали их именно в Unity. Разбираемся, на что нужно обратить внимание осваивающему движок с нуля новичку.

🎮 Разработка игр на Unity: 10 важных советов для начинающих

1. Освойте необходимые для старта навыки

2. Изучите основы дизайна

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

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

3. Освойте инструменты (плагины) для разработки игр

Для себя я выделил ТОП-3 полезных каждому разработчику инструмента:

4. Освойте Blender и Maya

🎮 Разработка игр на Unity: 10 важных советов для начинающих

Blender и Maya – наиболее мощные из доступных инструментов. Они занимают ведущие позиции в графике и анимации. Эти приложения повышают гибкость игровой разработки и в конечном итоге помогают сделать игру качественнее. Для самого движка Unity эти приложения очень важны.

5. Подучите терминологию

6. Учтите распространенные ошибки новичков

🎮 Разработка игр на Unity: 10 важных советов для начинающих

Даже у самых опытных разработчиков случаются ошибки. Выделим несколько из них:

  1. недооценка фазы планирования;
  2. работа с неоптимизированными моделями;
  3. построение взаимозависимой архитектуры кода;
  4. игнорирование потерь производительности;
  5. игнорирование проблем со сборкой мусора;
  6. отсутствие оптимизации использования памяти и хранилища;
  7. общие ошибки физики;
  8. тестирование всей функциональности вручную.

Чтобы таких проблем не возникало, воспользуйтесь советами одной из наших статей.

7. Используйте обучающие материалы для новичков

🎮 Разработка игр на Unity: 10 важных советов для начинающих

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

8. Подумайте о маркетинге и рекламе

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

9. Изучите мнения экспертов

10. Пройдите обучение на курсах

Если вы только начинаете путь в профессии, обратите внимание на курс факультета разработки игр на Unity образовательной онлайн-платформы GeekBrains. В нем уделяется большое внимание практике, а студенты в процессе обучения реализуют 2D- и 3D-игры разных жанров для ПК и смартфонов. С таким багажом можно идти на собеседование с потенциальным работодателем, тем более платформа предлагает студентам бесплатные карьерные консультации и помогает подобрать соответствующие их навыкам вакансии.

Unity - Полное руководство для начинающих по разработке игр 🔥

🎮 Игры

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

Вступление

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

Почему Unity?

Если вы хотите делать игры

Когда дело доходит до разработки инди-игр, вариантов действительно очень мало. Если вы хотите создавать игры, есть три основных варианта: Unreal, Unity или GameMaker.

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

В Unity есть множество очень успешных игр, таких как Escape from Tarkov (FPS), Monument Valley (Puzzler) и This War of Mine (Стратегия / Выживание).

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


Если вы хотите прототипировать пользовательский опыт

Поскольку Unity — это всего лишь движок с кучей физики, анимации и 3D-рендеринга в реальном времени, это также отличное место для создания полноценных интерактивных прототипов для исследований UX.

Unity полностью поддерживает VR и AR и, следовательно, может стать отличным инструментом для изучения архитектуры, автоматизации и моделирования с помощью клиентов.

Окно редактора Unity

Окно редактора разделено на несколько разделов. Мы расскажем об этом очень кратко, так как будем постоянно к нему обращаться на протяжении всей статьи. Если вы уже знакомы с этим, пропустите мимо!

Просмотр сцены: позволяет размещать и перемещать игровые объекты в сцене.

Просмотр игры: предварительный просмотр того, как игрок будет видеть сцену с камеры.

Инспектор: предоставьте подробную информацию о выбранном GameObject в сцене.

Assets / Project: здесь хранятся все префабы, текстуры, модели, скрипты и т. Д.

Иерархия: позволяет вложение и структурирование игровых объектов внутри сцены.

Теперь мы готовы начать!

Объекты Unity Game

Что такое GameObjects

Если у вас есть опыт веб-дизайна, вы можете думать о GameObjects как о элементах

! Чрезвычайно скучные контейнеры, но они легко расширяемы для создания сложной функциональности или визуальных эффектов.

Буквально все, от эффектов частиц, камер, игроков, элементов пользовательского интерфейса… (список продолжается) — это GameObject.

Создание иерархии

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

Беспорядок и эффективность

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

Позиционирование

Unity Translation: вы создали группу дронов-помощников, которые летают вокруг игрока. На самом деле вы бы не стали писать код, чтобы они гонялись за игроком, поэтому вместо этого вы создаете их как дочерние элементы игрового объекта player.

Встроенные компоненты Unity

Компонентная модель актера

Unity работает на основе модели компонентов акторов, проще говоря, GameObjects — это актеры, а компоненты — ваши скрипты.

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

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

Ключевые встроенные компоненты

Думаю, пришло время привести несколько примеров встроенных компонентов, предоставляемых движком Unity Games.

  • MeshFilter: позволяет назначать материалы для 3D-сетки GameObject.
  • MeshRender: позволяет назначать материалы 3D-сетке.
  • [Коробка | Mesh] Collider: позволяет обнаруживать GameObject во время столкновений.
  • Rigidbody: позволяет реалистичному физическому моделированию воздействовать на GameObjects с 3D-сетками и запускать события обнаружения на коллайдерах боксов.
  • Свет: освещает части вашей сцены.
  • Камера: определяет область просмотра игрока, которая будет прикреплена к GameObject.
  • Различные компоненты холста пользовательского интерфейса для отображения графического интерфейса пользователя

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

Создание пользовательских компонентов

Структура моноповедения

Ключевые функции

Все компоненты наследуются от класса MonoBehaviour. Он включает в себя несколько стандартных методов, главное:

  • void Start (), который вызывается всякий раз, когда объект, содержащий скрипт, создается в сцене. Это полезно в любое время, когда мы хотим выполнить некоторый код инициализации, например. установить экипировку игрока после того, как он появится в матче.
  • void Update (), который вызывается каждый кадр. Это то место, где будет выполняться основная часть кода, включающего пользовательский ввод, обновляющего различные свойства, такие как движение игрока в сцене.

Переменные инспектора

Часто мы хотим сделать компоненты максимально гибкими. Например, все оружие может иметь разный урон, скорострельность, has_sight и т. Д. Хотя все оружие, по сути, одно и то же, мы можем захотеть иметь возможность быстро создавать различные вариации с помощью редактора единства.

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

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

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

Обратите внимание, как мы можем сделать переменные с разными уровнями доступа, частными, общедоступными или общедоступными, но не отображаемыми в окне инспектора.

Принятие пользовательского ввода

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

Управление игровыми объектами

Трансформации

Все GameObjects имеют свойство transform, которое позволяет выполнять различные полезные манипуляции с текущим игровым объектом.

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

В общем, рекомендуется использовать локальное [Положение, Вращение], а не глобальное положение / поворот объекта. Обычно это упрощает перемещение объектов разумным образом, поскольку ось локального пространства будет ориентирована и центрирована на родительском объекте, а не на мировом начале координат и направлениях x, y, z.

Преимущества локального пространства станут немного более очевидными с диаграммой!

Если вам нужно преобразовать между локальным и мировым пространством (что часто бывает), вы можете использовать следующее:

Создание новых игровых объектов

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

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

По сути, это хранит шаблон объекта, который только что был в нашей сцене, со всеми теми же конфигурациями.

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

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

Доступ к другим игровым объектам и компонентам

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

Доступ через переменную инспектора

Это самый простой способ. Просто создайте общедоступную переменную для GameObject, как мы продемонстрировали ранее с префабами, и вручную перетащите ее на компонент через инспектор. Затем перейдите к переменной, как указано выше.

Доступ через теги

Мы можем пометить GameObjects или prefabs через инспектор, а затем использовать функции поиска игровых объектов, чтобы найти ссылки на них.

Доступ через преобразование

Доступ через SendMessage

Raycasting

Есть два сценария, в которых это может пригодиться (вероятно, их гораздо больше):

Обнаружение столкновений

Ранее мы упоминали компоненты Collider и Rigidbody, которые можно добавить к объекту. Правило для столкновений состоит в том, что один объект в столкновении должен иметь твердое тело, а другой — коллайдер (или оба имеют оба компонента). Обратите внимание, что при использовании raycasting лучи будут взаимодействовать только с объектами, к которым прикреплены компоненты коллайдера.

После настройки в любом настраиваемом компоненте, прикрепленном к объекту, мы можем использовать методы OnCollisionEnter, OnCollisionStay и OnCollisionExit для реагирования на коллизии. Получив информацию о столкновении, мы можем получить ответственность за GameObject и использовать то, что мы узнали ранее, для взаимодействия с прикрепленными к нему компонентами.

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

Расширенные возможности

Мы не будем вдаваться в подробности сейчас, но, возможно, в следующей статье — просто чтобы вы знали, что они существуют.

Создание графического интерфейса

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

Расширение редактора Unity

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

Анимация

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

Материалы и PBR

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

Совет новичкам по Unity

Если вы планируете написать свою первую игру, не стоит недооценивать сложность и время, необходимое для написания даже самых тривиальных игр. Помните, что над большинством игр, которые выходят в Steam, команды работают над ними в течение многих лет!

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

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

Хорошие ресурсы для разработки игр в Unity

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

Читайте также: