{#9 Поворот объектов в Unity}
Введение
В этой статье мы рассмотрим, как вращать объекты в Unity. Есть несколько способов добиться этого, в этом случае мы будем использовать метод Rotate класса Transform, это напрямую изменит параметры вращения, наблюдаемые в верхней части инспектора с выбранным GameObject.
Прежде чем мы начнем, я приглашаю вас посмотреть видео, которое я сделал, чтобы подытожить эту статью. Доступны английские субтитры.
Мы участвовали в Ludum Dare 51 и сделали эту игру за 72 часа.
ПОДПИСАТЬСЯ!
Как математически выражается вращение?
Для математического описания нам необходимо прямо или косвенно знать следующие параметры:
-Ось вращения
-Количество углов поворота
-Направление вращения
5 9 мы хотим вращать это сфера. Берем его в руки и протыкаем стержень точно через центр сферы. Затем берем стержень и ориентируем его с севера на юг параллельно земле. Наконец, мы заставляем его вращаться против часовой стрелки.
Удалось ли вам представить это в уме?
Мое описание вращения было точным, хотя, возможно, оно было составлено не лучшим образом, чтобы его можно было понять. Однако предположим, что все мы могли представить себе точно такое же.
В первую очередь можно сказать, что осью вращения является стержень. Если мы станем строгими, то ось вращения представляет собой воображаемую линию, проходящую через два конца стержня.
Число углов, на которое нужно повернуть, составляет пол-оборота, что математически равно 180° или π радианам.
Направление вращения против часовой стрелки или против часовой стрелки.
Эти три параметра можно полностью описать с помощью вектора, что мы и собираемся сделать в этой статье.
Рабочая станция
Мы собираемся использовать станцию вращения, которая состоит из трех шестерен, ориентированных в направлении трех мировых осей x, y, z.
Рис. 1: Вид спереди используемого зубчатого механизма.Три шестерни расположены перпендикулярно друг другу.
Рис. 2: Вид сбоку используемого зубчатого механизма.В иерархии мы можем найти их внутри GameObject «#9 RotateObjects». Они имеют названия GearX, GearY и GearZ с указанием оси вращения каждой шестерни.
Рис. 3: В иерархии у нас есть GameObject для каждой передачи.Сценарий, который нужно завершить, называется «RotateObjects» и назначается GameObject с тем же именем в иерархии.
На рисунке 4 мы видим, что три игровых объекта иерархии уже назначены в поля инспектора.
Рис. 4: Шестеренки назначаются в полях Скрипта Поворота Объектов.При открытии скрипта мы находим определенный метод FixedUpdate и внутри несколько комментариев, говорящих о том, что там должны вращаться шестеренки.
Если непонятно, что такое метод, на моем канале есть видео, в котором я рассказываю о методах в программировании (доступны английские субтитры), а также есть статья в разделе программирования на этой странице.
Почему код ротации должен идти в методе FixedUpdate?
В статье 1 о чтении ввода с клавиатуры и мыши мы обсуждали, почему инструкции по чтению были в методе Update.
Метод FixedUpdate, как видно из его названия, представляет собой обновление состояния объекта, но выполняется в определенное фиксированное время.
Это означает, что как бы ни менялась частота кадров игры, у нас будет одинаковое количество выполнений этого метода в секунду.
Colocaremos en el método FixedUpdate una instrucción que hará que los engranajes giren una determinada cantidad de ángulos en algún sentido regeo de un eje. Esto significa que en cada llamada de FixedUpdate se aplicará la rotación, lo que generará un movimiento continuo de rotación.
Рис. 5: Поля, определенные в сценарии RotateObjects.Рис. 6: Скрипт при первом открытии. Определен метод FixedUpdate.Решение
Метод Rotate класса Transform имеет разные версии, мы собираемся использовать ту, в которой первым параметром является вектор, полностью выражающий вращение, а во втором параметре мы указываем тип используемых координат, глобальные координаты уникальные во всем мире игры или локальные координаты, характерные для каждого конкретного объекта, как если бы у каждого объекта был свой север.
Рис. 7: Инструкции по вращению каждой шестерни относительно своей оси.По математическим свойствам векторов я переписал вектор как произведение его модуля или нормы, умноженной на единичный вектор (норма 1), описывающий направление.
Это позволяет нам разделить, с одной стороны, направление вращения, а с другой стороны, количество углов поворота.
Рис. 8: Изменяя переменную в инспекторе, мы можем изменить скорость набора передач.Еще одно преимущество такого выражения вектора заключается в том, что мы можем изменить направление вращения, просто используя отрицательные значения в инспекторе.
Рис. 9: Используя отрицательные значения, можно изменить направление вращения зубчатой передачи.Заключение
Вы можете просто вращать объекты в Unity, используя метод Rotate класса Transform.
Если нам не нужна математическая точность, мы можем играть с числами и получать разные результаты.
С помощью этого типа вращения мы напрямую воздействуем на вектор вращения компонента Transform, это нормально, если мы хотим показать только вращение анимации. Если вращение необходимо для создания физических взаимодействий, следует использовать RigidBody.
Показать карту (Компоненты) | ArcGIS Maps SDK для Unity
Узнайте, как настроить базовую карту, источник высот, слои данных и отобразить определенную область с помощью компонентов и конвейера рендеринга высокого разрешения от Unity.
В этом руководстве вы создадите локальную сцену Unity, используя сервис слоя базовой карты и слои данных. Поверхность сцены определяется слоем высот , а камера расположена так, чтобы отображать вырезанную область Нью-Йорка.
Предварительные требования
Перед началом работы с этим учебным пособием вам необходимо:
Вам потребуется учетная запись разработчика ArcGIS или учетная запись ArcGIS Online и ключ API для доступа к сервисам ArcGIS . Если у вас нет учетной записи, зарегистрируйтесь бесплатно.
Убедитесь, что ваша среда разработки соответствует системным требованиям.
Следуйте инструкциям по установке и настройке и установите плагин. Обязательно импортируйте образцы ресурсов.
Создайте новый проект HDRP.
Если вы не знакомы с компонентами Unity, дополнительные сведения см. на страницах Знакомство с компонентами и Использование компонентов.
Шаги
Создать новую сцену
В верхнем меню нажмите Файл > Новая сцена и откройте всплывающее окно.
Выберите шаблон Basic Outdoors (HDRP) и нажмите кнопку Кнопка Create , затем сохраните сцену с именем сцены.
Создание карты
В этом уроке вы создадите локальную сцену и установите круговой экстент.
Создайте пустой игровой объект и переименуйте его в
ArcGISMap
в окне иерархии .Прикрепите компонент ArcGIS Map к пустому игровому объекту. Когда вы создаете ArcGIS Map , Компонент HPRoot
В окне Inspector щелкните Local в разделе Map Type .
В разделе Исходное положение вы можете настроить центр вашей сцены ГИС с его координатами и хорошо известным идентификатором пространственной привязки (WKID). Для учебника установите следующие значения параметров:
- Долгота = -74;
- Широта = 41;
- Высота = 0;
- Пространственная привязка WKID: 4326
Информацию о пространственной привязке см. на странице пространственных привязок.
В Map Extent установите флажок Enable Map Extent и установите следующие значения экстента карты:
- Longitude = -74. 0;
- Широта = 40,72;
- Форма: Круг;
- Пространственная привязка WKID: 4326
- Размеры формы = 5000;
Это результат окна Inspector .
Для получения дополнительной информации о создании ArcGIS Map см. страницу Карты.
Установить базовую карту
Щелкните игровой объект ArcGISMap , к которому прикреплен компонент ArcGIS Map , в окне Hierarchy .
Разверните компонент ArcGIS Map , затем разверните раздел Basemap в окне Inspector .
Задайте URL-адрес онлайн-сервиса для сервиса базовых карт в свойстве Basemap .
Используйте темные цвета для кодовых блоков. Тип базовой карты имущество.
Установка ключа API
В этом руководстве вы будете использовать службу базовых карт, для которой требуется ключ API.
Перейдите на панель инструментов разработчика, чтобы получить ключ API .
Щелкните игровой объект ArcGIS Map в окне Hierarchy .
Разверните компонент ArcGIS Map и найдите раздел Authentication в Inspector 9Окно 0015.
Установите ключ API в поле Ключ API .
Дополнительные сведения о ключе API см. в разделе Ключи API.
Установить высоту
Щелкните игровой объект ArcGISMap , к которому прикреплен компонент ArcGIS Map в окне Hierarchy .
Разверните компонент ArcGIS Map , затем разверните Раздел Elevation в окне Inspector .
Задайте URL-адрес онлайн-службы для службы повышения прав в свойстве Elevation .
Используйте темные цвета для кодовых блоков.Создание и настройка камеры
ArcGIS Maps SDK для Unity загрузит лучшие уровни детализации для областей, расположенных ближе к виду, и более низкие уровни детализации для областей, которые находятся дальше, с компонентом ArcGIS Camera .
Установите основную камеру по умолчанию в качестве дочернего элемента игрового объекта ArcGISMap в окне Hierarchy .
Нажмите кнопку Добавить компонент в окне Инспектора .
Поиск Камера ArcGIS и прикрепите его к камере.
Выполните те же действия, что и в шаге 2, найдите компонент ArcGIS Location и прикрепите его к камере.
Исходное положение камеры будет определяться настройками компонента Location ArcGIS. Задайте для параметров положения компонента ArcGIS Location следующие значения:
- Долгота = -74,054921;
- Широта = 40,691242;
- Высота = 3000;
- Пространственная привязка WKID: 4326
Установите для параметров поворота компонента ArcGIS Location следующие значения:
- Heading = 55;
- Шаг = 58;
- Рулон = 0;
Это результат присоединения этих компонентов.
Когда вы дважды щелкнете по игровому объекту
ArcGISCamera
, ваша камера обзора Scene будет перемещена в позицию. Если вы также хотите отрегулировать тангаж, курс и крен, вы должны сделать это, удерживая правую кнопку мыши нажатой в Сцена вид.На этом этапе вы можете отключить Fog в Sky and Fog Volume , чтобы увидеть базовую карту и слои данных, которые вы добавите. В конце этого урока вы настроите освещение.
Присоедините контроллер камеры
Во время редактирования у вас есть камера просмотра Сцена для перемещения в окне просмотра, когда включен режим редактора. В режиме воспроизведения вы должны подключить контроллер камеры, чтобы исследовать сцену. В этом уроке вы подключите контроллер из Образцы активов ArcGIS Maps SDK для Unity .
Нажмите на
ArcGISCamera
в окне Hierarchy .В окне Inspector нажмите кнопку Добавить компонент .
Найдите ArcGIS Camera Controller
и прикрепите его к игровому объекту ArcGISCamera .
Информацию о камере см. на странице Камера.
Добавить слои данных
Вы добавите три слоя мозаичных изображений и один слой сцены 3D-объекта из ArcGIS Online .
Выделив игровой объект ArcGISMap в окне Hierarchy , перейдите к разделу Layer из окна Inspector .
Разверните раздел Layer и щелкните значок + , чтобы добавить новый элемент массива.
Введите
01 — Транзитная частота Нью-Йорка
в поле Имя .Введите URL-адрес онлайн-сервиса слоя в поле Source , чтобы добавить слой мозаичных изображений UrbanObservatory_NYC_TransitFrequency.
Использовать темные цвета для кодовых блоков. Копироватьhttps://tiles.arcgis.com/tiles/nGt4QxSblgDfeJn9/arcgis/rest/services/UrbanObservatory_NYC_TransitFrequency/MapServer
В раскрывающемся списке Layer
6 Arc-GIS выбрать 8 Image
6 Введите поле .
Установите Непрозрачность на
0,9
.Установите флажок Is Visible .
Чтобы добавить остальные слои, выполните шаги 3–7, за исключением шага 6, Непрозрачность будет установлена на
0,6
,1,0
,1,0
для слоев 02, 03 и 04 соответственно. Для слоя04 - New York Buildings
обязательно выберите ArcGIS 3D Object Scene Layer 9.0015 в качестве типа слоя из раскрывающегося списка.Имя слоя:
02 — Промышленные районы Нью-Йорка
Элемент ArcGIS Online: New_York_Industrial
Имя слоя:
03 - Плотность населения Нью-Йорка
Элемент ArcGIS Online: NewYorkCity_PopDensity
Использование темных цветов для кода BlockScopyhttps://tiles.arcgis.com/tiles/4yjifsiig17x0gw4/arcgis/rest/services/newyorkcity_popdensity/mapserver
- . Онлайн-элемент: Нью-Йорк, США. Здания. Используйте темные цвета для кодовых блоков.0004 Это результат раздела Layers.
Настройка неба и освещения
Unity предоставляет систему неба и освещения. См. страницу Небо и освещение для получения дополнительной информации. В этом руководстве вы настроите параметры игровых объектов, которые были добавлены шаблоном.
Настройка Солнца
В окне Hierarchy щелкните на игровом объекте Sun .
В Инспекторе , установите поворот на следующие значения в разделе Transform .
- X:
36
- Y:
110
- Z:
85
- X:
Open the Emission section and set the Intensity value to
10000
.
Это результат игрового объекта Sun .