Настройка модели космического корабля в Unity. #2

https://vetalkov.com    2018-01-03 20:59:42     тег: space shooter

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

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

Давайте расположим модель максимально удобно на нашей сцене. Если вы желаете сконцентрировать фокус на определенном объекте, откройте меню Edit - Frame Selected или нажмите клавишу F в то время когда объект является активным на сцене. Двойной щелчок на игровом объекте на вкладке Hierarchy также фокусирует камеру на выделенном объекте. 

Теперь давайте его переименуем. Нажмите на на объект правой кнопкой мыши и в выпадающем меню выберите Rename введите имя Player и нажмите Enter. Теперь наша задача разместить корабль в центре мировых координат. Наша сцена имеет три плоскости с координатами в виде осей X, Y, Z начало которых начинается с 0 по всем трем осям. 

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

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

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

Как вы можете видеть, один из компонентов который содержит наш объект, с название Mesh Filter (сетчатый фильтр), он придает форму нашему объекту. А также есть еще и компонент Mesh Renderer, этот компонент предназначен для наложения текстуры на поверхность объекта. Немного ниже расположены материалы которые использует компонент Mesh Renderer. 

Также объект Player содержит компонент Transform, чтобы знать в каких координатах он находится, под каким углом и в каком масштабе. Чтобы настроить объект в игре, вы можете добавлять новые компоненты или удалять ненужные. Также мы будем создавать свои компоненты, в виде сценариев написанных на C#. 

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

Чтобы использовать физику нам необходимо добавить компонент под названием Rigidbody (твердое тело). Давайте свернем остальные компоненты, чтобы они нас не отвлекали, щелкните по стрелке слева на каждом компоненте. 

Теперь нажмите кнопку Add Component, выберите Physics - Rigidbody. Это придаст объекту физические свойства. По умолчанию компонент Rigidbody использует силу тяжести или другими словами гравитацию. 

Но нам сейчас не нужна гравитация, иначе корабль будет постоянно падать. Давайте снимем флажок Use Gravity. После того как мы добавили компонент Rigidbody на наш корабль, обладает физическими свойствами. 

Для взаимодействия объектов, физическому движку компонента Rigidbody необходимо знать объем наших объектов. 

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

Давайте снова используем кнопку Add Component, на этот раз выберите Physics - Capsule Collider. Это добавит простую клетку вокруг нашего игрового объекта. 
Сейчас вы видите, что коллайдер похож на сферу, но это потому, что капсула коллайдера определяется двумя сферами и пространством между ними, и мы видим обе сферы в одном месте.Давайте изменим размер капсулы коллайдера. 

Ориентация по умолчанию для капсулы коллайдера осуществляется по оси Y вверх и вниз или вдоль оси, обычно это применяется для человекоподобных объектов. Но наш корабль является длинным по оси Z, поэтому давайте изменим направление на эту ось, уменьшим радиус и увеличим высоту. Для получения вида сверху на сцене есть такая штуковина нажав на которой Y вы получите вид сверху. 

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

Для нашей игры использование такого коллайдера вполне достаточно. Однако есть и другие варианты. Давайте еще раз нажмем кнопку Add Component и выберем Physics, существуют и другие формы коллайдеров, такие как сфера, куб и другие. Но есть и более сложная форма коллайдеров называется она Mesh Collider. С ее помощью мы может настроить столкновения от сетки которая обтекает объект. 

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

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

Выберите Mesh Collider и посмотрите его в действии. После этого удалите Capsule Collider, он нам больше не нужен.

Для того чтобы увидеть сетку коллайдера, отключите сетку визуализации Mesh Renderer. Вы увидите зеленую сетку коллайдера, которая скрыта под Mesh Renderer. Мы можем видеть насколько сложна эта сетка если повращаете объект. Сетка коллайдера состоит из множества треугольников которые позволяет добиться большой точно обтекания объекта. 

Компонент Mesh Collider содержит ссылку на сетку, которую он использует, по умолчанию Unity применяет ту сетку, которая идет в комплекте с объектом. Но мы может также указать другую, например более упрощенную сетку. Найдите упрощенную сетку в каталоге моделей. Откройте файл модели и выберите нужный Mesh. Перетащите его в слот Mesh на компоненте Mesh Collider. Теперь мы видим что сетка коллайдера существенно упрощена. 

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

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

И последнее, что мы сегодня сделаем это, добавим эффект работающего двигателя. Откройте Prefabs - VFX - Engines и найдите engines_player. Перетащите данный префаб на наш объект Player, на вкладке Hierarchy чтобы он стал дочерним объектом. Префаб (заготовка) состоит из двух систем частиц. И сейчас огонь из турбины выглядит несколько необычно. 

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

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