Упражнение. Создание интеллектуальных операций размещения объектов с помощью решателей
Поиск решения — это один из компонентов набор средств смешанной реальности (MRTK). Давайте рассмотрим два типа решателей и их функциональные возможности.
Расположение решателей в MRTK
Решатели MRTK находятся в папке пакета SDK для MRTK. Чтобы просмотреть доступные решения в проекте, в окне проекта перейдите к >пакетам средств решения пространственных манипуляций>MRTK.
Решатель «Указатель направления»
Решатель «Указатель направления» используется, чтобы направить пользователя к объектам. Это делается следующим образом:
В окне Проект перейдите к разделу Ресурсы>MRTK.Tutorials.GettingStarted>Префабы. Перетащите префаб Chevron в окно иерархии и задайте для него положение преобразования X = 0, Y = 1,5, Z = 2, чтобы разместить его рядом с объектом RoverExplorer.
Переименуйте вновь добавленный объект «Шеврон» на Указатель. Затем в окне Инспектора выберите Добавить компонент, чтобы добавить DirectionalIndicator.
Настройте компоненты DirectionalIndicator и SolverHandler следующим образом:
a. Убедитесь, что для отслеживаемого целевого объекта компонента SolverHandler задано значение Head.
b. Назначьте объект RoverExplorer для целевого направления компонента DirectionalIndicator, перетащив его из окна Иерархия в поле Нет (преобразование).
c. Измените Смещение вида на 0,2.
Чтобы перейти в режим Игра, нажмите на кнопку воспроизведения. Нажмите и удерживайте правую кнопку мыши при перемещении мыши влево или вправо для поворота направления взгляда.
Обратите внимание, что когда вы отводите взгляд от объекта RoverExplorer, отобразится объект Указатель, который указывает на объект RoverExplorer.
Решатель «Размещение по нажатию»
Решатель «Размещение по нажатию» используется для изменения положения объектов. Это делается следующим образом:
В окне Иерархия выберите объект RoverExplorer>RoverAssembly. Затем в инспекторе используйте добавление компонента для добавления компонента Tap To Place. Настройте компонент следующим образом:
a. Убедитесь, что для отслеживаемого целевого объекта компонента SolverHandler задано значение Head.
b. Снимите флажок Использовать стандартное смещение Surface Normal и убедитесь, что для смещений Surface Normal установлено значение 0.
c. Установите флажок Сохранять вертикальную ориентацию.
Затем добавьте компонент с отслеживанием состояния. В окне инспектора найдите событие On Clicked () (Нажми). Затем щелкните значок +, чтобы добавить новое событие. Настройте событие следующим образом:
a. Назначьте объект RoverAssembly в качестве прослушивателя события On Clicked () путем перетаскивания его из иерархии в поле None (Object).
b. В раскрывающемся списке "Нет функции" выберите TapToPlace>StartPlacement(), чтобы вызвать этот метод при активации события.
Если объект RoverAssembly все еще выбран в окне Иерархия, в окне Инспектора выберите событие При начале размещения (). Затем щелкните значок +, чтобы добавить новое событие.
Настройте событие следующим образом:
a. Назначьте объект RoverAssembly в качестве прослушивателя для события При начале размещения (), перетащив его из окна Иерархия в поле Нет (объект).
b. В раскрывающемся списке Нет функции выберите TapToPlace>float SurfaceNormalOffset, чтобы обновить значение свойства SurfaceNormalOffset при запуске события.
c. Убедитесь, что для аргумента задано значение 0.
В окне Иерархия щелкните правой кнопкой мыши пустое место. Выберите Трехмерный объект>Куб, чтобы создать временный объект, представляющий землю, и настройте компонент Transform следующим образом:
- Позиция: X = 0, Y = 0,15, Z = 6
- Поворот: X = 0, Y = 0, Z = 0
- Масштаб: X = 10, Y = 0,2, Z = 10
Чтобы перейти в режим Игра, нажмите на кнопку воспроизведения. Затем нажмите и удерживайте правую кнопку мыши при перемещении курсора вниз, пока взгляд не достигнет объекта RoverAssembly.
Удерживайте панель пространства и нажмите левую кнопку мыши, чтобы сделать касание воздуха, и запустить процесс касания на месте.
Нажмите и удерживайте правую кнопку мыши при перемещении мыши влево или вправо для поворота направления взгляда. Когда вы довольны размещением, удерживайте пробел и нажмите левую кнопку мыши, чтобы сделать конечный касание воздуха.
Завершив тестирование функции в режиме Игра, щелкните объект «Куб» правой кнопкой мыши и выберите Удалить, чтобы удалить его из сцены.