Упражнение. Добавление взаимодействия рук с ObjectManipulator

Завершено

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

Добавление и настройка первого куба

  1. В строке меню выберите GameObject>трехмерный объект>куб.

    снимок экрана: команды меню для добавления куба.

    Размер куба по умолчанию составляет один кубический метр, который слишком велик для наших целей. Мы масштабируем размер до 20 кубических сантиметров.

  2. Выберите куб, а затем в инспектораизмените значения масштабирования куба в разделе Преобразование следующим образом:

    X = 0.2, Y = 0,2, Z = 0,2

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

  3. В инспектораизмените значения позиции куба в разделе преобразования следующим образом:

    X = -0,2, Y = 1.6, Z = 0,5

    снимок экрана компонента преобразования куба после обновления.

    Мы хотим видеть три стороны куба, поэтому мы также изменим поворот куба.

  4. В инспектораизмените значения поворота куба в значенияхпреобразования следующим образом:

    X = 9, Y = 14, Z = 0

    Совет

    Чтобы увеличить масштаб куба, выберите его, убедитесь, что курсор находится над окном Сцены, и нажмите клавишу F. Вы можете увеличить масштаб любого объекта таким образом.

Добавление скриптов в куб

Чтобы объект был "захватываемым" с помощью отслеживаемых рук, он должен иметь три компонента:

  • Компонент Коллайдера (вам не нужно ничего делать здесь; куб в Unity уже имеет Box Collider по умолчанию)
  • Компонент Манипулятора объектов (скрипт)
  • Компонент Диспетчера ограничений (скрипт)
  1. При выборе куба в окне инспектора нажмите кнопку Добавить компонент, а затем найдите и выберите скрипт объектного манипулятора.

    снимок экрана: добавление скрипта манипулятора объектов.

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

    снимок экрана скрипта диспетчера ограничений, добавленного в куб.

Обновление материала куба

В целях повышения производительности рекомендуется использовать материалы MRTK вместо материалов Unity по умолчанию.

  1. При выборе куба найдите и разверните раздел Материалы на компоненте Отрисовщика сетки.
  2. Замените материал по умолчанию материалом MRTK_Standard_White, расположенным под MRTK Standard Assets>Материалы. Это можно сделать, перетащив материал непосредственно в поле элемента в разделе материалов

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

  1. В иерархиищелкните правой кнопкой мыши на кубе и выберите Дублировать. Дублированный куб отображается с именем Cube (1).

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

  3. Щелкните правой кнопкой мыши повторяющийся куб, выберите Переименовать, а затем назовите куб Far Cube.

    На данный момент похоже, что в представлении Сцена есть только один куб. Это связано с тем, что Near Cube и Far Cube находятся в одном и том же месте. Изменим положение и поворот Far Cube.

  4. Если параметр Far Cube по-прежнему выбран, измените его значения в компоненте преобразования следующим образом:

    положение: X = 0,6, Y = 1.6, Z = 1.1

    вращение: X = 27, Y = 0, Z = 0

    Теперь камера должна увидеть близкий куб слева и Far Cube немного дальше справа. Чтобы подтвердить это, в иерархии выберите Основная камера (в разделе MRTK XR Rig>Смещение камеры), а затем посмотрите окно Основная камера в окне Сцена.

    снимок экрана вида с основной камеры в окне сцены.

    Совет

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

Захватите и переместите кубы в игровом режиме

  1. Нажмите кнопку Воспроизвести. Когда проект запускается, вид переключается на окно игры.

    снимок экрана окна Игры после входа в режим игры.

    Заметка

    Перед воспроизведением убедитесь, что под Параметры Проекта>MRTK3установлен действительный профиль .

  2. Нажмите кнопку трехточие над правым верхним углом окна игры, а затем выберите "Развернуть".

    Снимок экрана команды

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

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

    снимок экрана: имитированная правая рука, касающаяся близкого куба.

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

    снимок экрана: перемещение куба.

    Для захвата и перемещения Far Cube мы будем использовать дальний указатель, подключенный к имитированной руке.

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

    снимок экрана с имитацией далёкого указателя руки.

  7. Переместите руку ближе к Far Cube, пока не увидите кончик указателя на кубе. Может потребоваться двигать рукой круговыми движениями несколько раз, чтобы кончик указателя появился на кубе.

    снимок экрана с дальней указателем, касающимся куба.

  8. Нажмите левую кнопку мыши (это закрывает руку, принимая «жест щипка»), а затем перетащите куб по сцене.