Это всё

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

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

Сами по себе GameObjects довольно бесполезны — как мы видели, они в значительной степени просто контейнеры. Чтобы добавить к ним функциональность, мы должны добавить компоненты, которые по сути представляют собой сценарии, написанные на C # или Javascript.

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

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

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

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

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

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

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

Просто нажмите на раздел справки, документация в целом довольно хороша

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

Часто нам нужно взаимодействовать с другими GameObject, а также с их ассоциированными компонентами. Если у вас есть ссылка на игровой объект, это довольно просто.ComponentName comp = some_game_object.GetComponent <ComponentName> ();

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

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

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

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

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

Это просто делается, как показано ниже.GameObject some_game_object = GameObject.FindGameObjectWithTag («Кирпич»);

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

Если мы хотим получить доступ к компонентам в каком-либо родительском объекте, мы можем легко сделать это с помощью атрибута transform.ComponentName comp = gameObject.transform.parent.GetComponent <ComponentName> ();

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

В качестве альтернативы, если мы хотим отправить сообщение многим другим компонентам или хотим отправить сообщение объекту, который находится далеко вверх по вложенной иерархии, мы можем использовать функции отправки сообщения, которые принимают имя функции, за которым следуют аргументы.gameObject.SendMessage («MethodName», параметры); // Трансляция сообщениеgameObject.SendMessageUpwards («ИмяМетода», параметры); // Получено только компонентами, вложенными выше.

Что такое Unity

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

Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — , успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.

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

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

2014

Выходит красивейшая изометрическая головоломка Monument Valley. Студия Ustwo Games, состоящая всего из восьми человек, зарабатывает $5,8 млн — при затратах на разработку в $900 тысяч.

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

В наш топ попадает и симулятор выживания Subnautica — новый проект студии Unknown Worlds Entertainment, которая до этого выпустила две части командного шутера Natural Selection на модифицированном движке Half-Life. Сейчас этот шутер благополучно забыт, а вот в Subnautica играют до сих пор.

Синематик Subnautica

Настройка среды в Unity

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

— существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

Unity позволяет кодировать на трех языках: JavaScript, C# и Boo. Рекомендую использовать C# — он более мощный и проще.

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

Вот несколько ссылок, которые могут быть вам полезными:

  • : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

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

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Raycasting

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

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

  1. Если вы разрабатываете систему оружия для игры, вы можете использовать raycasting для обнаружения попаданий и даже настроить длину луча, чтобы предметы ближнего боя «поражали» только на коротких дистанциях.
  2. Создайте луч от указателя мыши к точке в трехмерном пространстве, то есть если вы хотите, чтобы пользователь мог выбирать юниты с помощью мыши в стратегической игре.

Пример 2, подробно описанный выше

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

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

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

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

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

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

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

Watch this video on YouTube

Watch this video on YouTube

Watch this video on YouTube

Концептуальное искусство

  • Школа дизайна Фэн Чжу (более 90 часов уроков по концепт-арту)
  • Тайлер Эдлин Арт (Великое арт-сообщество BST с отзывами профессионалов о ежемесячных испытаниях)
  • Art Cafe (Интервью и мастер-классы с известными концепт-художниками)
  • Трент Канюга (иллюстратор и 2D-художник, который также создает свою собственную игру)

3D моделирование

  • CG Cookie (лучшие основы моделирования сетки в Blender, у них есть множество другого отличного контента для блендера)
  • Тор Фрик (модельеры и скульпторы твердых поверхностей в Blender)
  • Глеб Александров (Краткие мощные уроки по рендерингу в Blender)

Игровой дизайн

  • DoubleFine Amnesia Fortnight (разработчики игр, которые проводят двухнедельный хакатон и записывают весь процесс проектирования)
  • Инструментарий GameMakers (изучает принципы игрового дизайна)

Программирование

  • Handmade Hero (Написание игры и движка с нуля на C)
  • Джонатан Блоу (инди-разработчик, транслирующий свою разработку игры)
  • Brackeys ( хорошие учебные пособия по Unity)

Как создать онлайн игру в Unity5.

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

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

Откроем наш проект и создадим три папки Scene, Script и Resorces. В первой мы будем хранить сцены Menu и Game (Можно создать их сразу),

 

во второй папке мы будем хранить скрипты (в поиске введите WorkerInGame и WorkerMenu и перенесите их в эту папку), ну а третью папку пока оставим пустой (в ней будут хранится персонажи).

Далее перейдем в папку со скриптами и рассмотрим их. Если вы немного разбираетесь в программировании вы увидите что скрипт WorkerMenu отвечает за отображение графической части, подключение к серверу, возврат ошибок при неудачном подключении и др. а скрипт WorkerInGame отвечает за отображении персонажей на сцене, чат и за возврат, при необходимости, назад в меню. Откроем срипт WorkerMenu и измени две строчки:

public static readonly string SceneNameMenu = «Menu»;

public static readonly string SceneNameGame = «Game»;

Сохраним и откроем сцену Menu.  Создадим пустой объект и поместим на него компонент Photon View и скрипт Worker Menu.

Теперь откроем сцену Game и подготовим ее. Создадим плоскость или террайн, на ней разместим пустой объект (будьте внимательны, разместите пустой объект так, чтобы он находился чуть выше плоскости, иначе ваши персонажи будут проваливаться). На пустой объект поместите так же компонент Photon View и скрипт WorkerInGame.

Сохраняем персонажа в префаб и перемещаем в папку Resorces. Вернемся к нашей пустышке на сцене и в срипт WorkerInGame поместим наш префаб в Player Prefab.

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

Можете скомпилировать проект и проверить работоспособность нашего сервера. Запускаем игру и видим меню мультиплеера где нажимаем Create Room.

Как видим персонаж удачно появился на сцене. Запускаем игру еще раз и видим что персонажей онлайн уже двое и открыта одна комната/сервер. Нажмем Jhoin Room. (Все наименования кнопок вы можете изменить в скрипте Worker Menu)

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

Кратко об игровом движке Unity

Unity Technologies выпустила Unity летом 2005 года. После этого события создание 2D-игр стало невероятно простым и быстрым. Сообществу было представлено три основных инструмента, способных сделать программу доступной для оформителей и разработчиков: Tilemap Editor, Timeline и Cinemachine. Редактор Tilemap был выпущен немного позднее и позволил программистам рисовать непосредственно в Unity.

Tilemap Editor дает возможность создавать обширные и сложные Tilemaps без использования сторонней программы. Редактор шкалы времени и Cinemachine были выпущены практически одновременно, хотя серьезные улучшения для Cinemachine были представлены сообществу позже.

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

Прежде чем начать работать с движком Unity, пользователь должен пройти онлайн-обучение, чтобы понять его основы, навигацию по интерфейсу с использованием трех основных инструментов манипулирования: Translate, Rotate и Scale, научиться создавать префабы, добавлять и изменять компоненты внутри «Инспектора».

Для того чтобы творить с движком Unity 2d-игры, на пользовательском компьютере должны быть установлены Unity и некоторые 2D-приложения, такие как Ps, Gimp, SketchPad или MS Paint. Также разработчик должен хорошо разбираться в основах C #, таких как создание переменных, их изменение и вызов функций. Технические требования:

  • Компьютер с Windows 7 SP1 или выше либо macOS 10.12 Sierra и выше.
  • Доступ в интернет для загрузки бесплатной версии Unity.

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

Замена элементов 1

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

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

Откройте Tile.cs в редакторе кода. Для удобства скрипт уже содержит несколько переменных и два метода: Select и Deselect.

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

Чего недостает, так это возможности для игрока взаимодействовать с элементами.

Левый клик мыши представляется подходящей опцией управления.

В Unity присутствует встроенный метод MonoBehaviour: OnMouseDown.

Добавьте следующий метод в Tile.cs,  ниже метода Deselect:

void OnMouseDown() {// 1
if (render.sprite == null || BoardManager.instance.IsShifting) {
return;
}

if (isSelected) { // 2 Is it already selected?
Deselect();
} else {
if (previousSelected == null) { // 3 Is it the first tile selected?
Select();
} else {
previousSelected.Deselect(); // 4
}
}
}

  1. Удостоверьтесь, что игра позволяет выбирать элементы. Пользователям не всегда это нужно, например, когда игра заканчивается, или когда элемент пустой, это лишнее.
  2. Оператор if (isSelected) определяет, когда выбирать или не выбирать элемент.
  3. Проверьте, выбран ли еще какой-то элемент. Когда у компонента previousSelected нулевое значение, он — первый, поэтому выберите его.
  4. Если он не первый, отмените выбор всех других элементов.

Сохраните скрипт и вернитесь в редактор.

Теперь у вас должна быть возможность выбора/отмены элементов кликом левой кнопки мыши.

Теперь можно добавить механизм замены.

Добавление игрока

Внутри объекта Road нужно создать ещё один пустой объект и назвать его Player. Внутри него добавьте пустой объект Model и камеру. В Model нужно поместить модель машины, а затем установить камеру сзади модели.

Для объекта Player добавьте компонент Rigidbody и два коллайдера:

Один из коллайдеров нужно установить как триггер — с его помощью будут проверяться столкновения с разными объектами.

Теперь нужно заставить машину двигаться. Для этого создадим скрипт Moving и прикрепим его к объекту Player.

В первую очередь добавим переменные:

Теперь в Unity нужно заполнить все публичные переменные. Пустыми пока можно оставить Control и Broken Prefab, потому что они ещё не готовы.

Переменная Rb будет добавляться скриптом в методе Start():

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

Вернёмся к движению:

Можно запустить сцену и проверить, как движется машина. Камеру перед этим лучше сместить вбок, чтобы видеть, вращаются ли колёса.

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

Само управление выглядит так:

Ссылку на скрипт нужно добавить в Moving:

Затем нужно добавить в метод Update() скрипта Moving следующий код:

Его надо вставить сразу после объявления переменных newSpeed и sideSpeed. Теперь машиной можно управлять:

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

Встроенные компоненты в первую очередь управляют физикой и визуальными эффектами, но для того, чтобы действительно создать игру, вам нужно будет принимать вводимые пользователем данные и манипулировать этими стандартными компонентами, а также самими игровыми объектами.Чтобы начать создание компонентов, перейдите в нужный GameObject> Добавить компонент> введите имя вашего нового компонента в строке поиска> новый скрипт (c #).

В качестве общей рекомендации я бы не советовал использовать Javascript в Unity. Он не обновлялся со всеми замечательными вещами, которые поставлялись с ES6, а большая часть более продвинутых вещей основана на материалах C #, перенесенных на Javascript … По моему опыту, это просто становится одним гигантским обходным решением.

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

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

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


Одинаковые деревья-шаблоны

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

2015

Год во многом знаковый для отрасли. Кроме «рогалика» Sunless Sea и симулятора ядерного убежища Fallout Shelter от Bethesda, на Unity вышла партийная RPG Pillars of Eternity и платформер-метроидвания Ori and the Blind Forest.

Обе игры делались опытными, но независимыми командами. Pillars of Eternity — проект Obsidian, той самой студии, которая подарила миру Star Wars: Knights of the Old Republic II — The Sith Lords, Neverwinter Nights 2 и горячо любимый фанатами Fallout: New Vegas.


В визуальном стиле PoE легко узнаются RPG «старой школы», такие как Baldur’s Gate и Icewind Dale
Особенность геймплея — разветвленные системы диалогов, где каждое умение, характеристика или даже прошлое персонажа определяют варианты ответа и исход сцены

Помимо того, что PoE получилась действительно хорошей игрой, она запомнилась ещё и своими успехами в краудфандинге — целевую сумму в 1 миллион долларов студия получила уже на второй день кампании. Всего игра собрала 4 млн — это второе место среди видеоигр за всю историю Kickstarter. PoE продалась тиражом свыше 500 000 копий в год — это позволило студии окупить расходы и приступить к разработке второй части.


Визуальные эффекты сиквела Deadfire. Игра тоже сделана на Unity

Что до Ori and the Blind Forest, то это одна из самых красивых 2D-игр за последние лет десять: здесь есть вручную нарисованные фоны, в которых ни одна деталь не повторяется за всю игру, и потрясающая плавная анимация, и эффекты, а ещё эстетика, близкая по духу работам студии Ghibli («Принцесса Мононоке», «Унесённые призраками», «Мой сосед Тоторо»).

За год только через Steam было продано 420 млн копий игры, она вышла на все актуальные платформы, включая Switch.

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

Moon Studios

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector