Захват, удержание и бросание с помощью Взаимодействуемых
Обзор
Mesh Interactionables — это система для настройки объектов с помощью скриптов Unity, определяющих взаимодействие с объектом или аватаром в среде выполнения. Скрипты определяют свойства объекта, с которыми можно взаимодействовать с помощью интеракторов XRI. Набор средств Сетки содержит скрипты различных типов объектов, которые можно определить. При запуске проекта он настраивает все необходимые префабы и параметры, необходимые для объектов или аватара, чтобы вести себя как определено. Если вы хотите увидеть приблизительную предварительную версию того, что будут выглядеть взаимодействующие объекты и чувствовать себя как при запуске в приложении Сетки, обязательно настройте режим воспроизведения с эмуляцией сетки. Обратите внимание, что функции IK, отображаемые в приложении Сетки, недоступны в режиме воспроизведения с эмуляцией сетки.
Компонент установки, взаимодействующий с сеткой
Чтобы сделать объект взаимодействуемым, необходимо добавить компонент установки сетки.
В иерархии выберите объект.
В инспекторе нажмите кнопку "Добавить компонент", а затем выберите "Настройка взаимодействия сетки".
Компонент добавляется со свойством "Взаимодействуемый тип", заданным по умолчанию, значение "Базовый". (Типы объектов будут описаны в следующем разделе.)
Свойства для группы объектов, которые ведут себя одинаково, можно настроить с помощью родительского компонента установки Сетки. Свойства будут применяться ко всем дочерним элементам с жесткими телами во время выполнения путем автоматического добавления компонента "Взаимодействие сетки" к каждому дочернему объекту. Может потребоваться вручную добавить текст взаимодействия сетки для использования взаимодействия сетки с визуальным скриптом, например с событиями взаимодействия или изменением неуловимого целевого преобразования с помощью визуального скрипта.
Примечания:
Текст, взаимодействующий с сеткой, позволяет каждому взаимодействовать независимо.
Жесткое тело должно быть добавлено к объекту, если вы хотите, чтобы он был включен в физику.
Получение справки
В компонентах "Параметры взаимодействия сетки" и "Взаимодействие сетки" можно нажать кнопку "?" для перехода на страницу в документации по сетке, содержащей справку по функции, к которой подключена кнопка.
Типы взаимодействуемых объектов
Существует четыре типа объектов:
- Базовая
- Манипульируемая
- Оборудование
- Бросаемая
Чтобы выбрать тип объекта, выполните следующее:
- В раскрывающемся списке "Взаимодействуемый тип сетки" щелкните раскрывающийся список "Взаимодействуемый тип ", а затем выберите один из четырех вариантов.
Базовая
Как упоминалось выше, это тип по умолчанию. Когда пользователь наключает или выбирает объект, он может вызывать обратные вызовы и другие скрипты. Например, если у вас есть кнопка, которую вы хотите использовать для включения другого объекта, добавьте этот тип "Взаимодействие" в кнопку с обратным вызовом OnSelected , чтобы включить этот другой объект. Кнопка будет полностью взаимодействовать, просто добавив этот тип и коллидер; Вам не придется делать ничего другого.
Примечание. Другие три взаимодействуемых типа-Manipulable, Equippable и Throwable (описано ниже), имеют те же атрибуты, что и базовый тип, но с дополнительными функциями.
Дополнительные сведения о параметрах типа объекта Basic
Манипульируемая
Объект этого типа можно перемещать с расстояния; в частности, вы управляете его преобразованием во время выполнения и перемещаете его через пространство в конце луча взаимодействия. Элементы управления ярлыками доступны для поворота или перевода объекта. Для управления объектами в приложении Сетки можно включить параметры IK для аватара, чтобы следовать этому объекту. Манипульируемые объекты не требуют жесткого тела, но следует добавить его, если вы хотите, чтобы объекты имели возможности физики.
Дополнительные сведения о параметрах типа объекта Manipulable
Оборудование
Вы можете захватить объект этого типа. В терминах сетки мы говорим, что вы "вооружите" объект рукой аватара. Чтобы подготовить объект на компьютере, щелкните объект или нажмите клавишу F во время выбора объекта. Чтобы установить объект в Quest, нажмите кнопку "Захват" во время выбора объекта. Оснащенные объекты содержат параметры для целевых объектов IK для поза руки аватара, пока объект оснащен. Цели IK являются смещением от груди аватара; Это определяет, куда идет рука, пока объект удерживается или активируется.
Дополнительные сведения о параметрах типа объекта Equippable
Бросаемая
Как подразумевает имя, можно захватить и вызвать объект этого типа. После захвата вы можете ввести режим цели, нажав и удерживая левую кнопку мыши. Это позволит вашей руке аватара следовать вашему целевому объекту мыши; чтобы создать объект, отпустите левую кнопку мыши.
Дополнительные сведения о параметрах типа объекта Throwable
Создание объектов, взаимодействующих с визуальным скриптом
Все компоненты Взаимодействия имеют свойства взаимодействия и методы, доступные для визуального скрипта , поэтому у вас есть неограниченное количество способов их совместной работы. Чтобы воспользоваться преимуществами этого, используйте компонент "Взаимодействие сетки" внутри графа скрипта с узлом с доступным свойством, например OnHovered или OnSelected, подключен к узлу OnStateChanged . Например, следующий график скрипта включает цилиндр, пока кнопка нажимается и отключает ее при освобождении кнопки. Кнопка полностью взаимодействует, добавляя скрипт и коллидер; Вам не нужно делать ничего другого.
Свойства визуального скрипта
Для всех взаимодействуемых тел:
- IsHovered (только для чтения) — указывает, наведите ли ваш локальный аватар на объект.
- IsSelected (только для чтения) — выбирает ли какой-либо аватар. При запуске в MeshBrowser это будет в сети.
- IsSelectedLocally — указывает, выбирает ли локальный аватар.
- IsMine (только для чтения) — значение для последнего аватара для выбора или оснащения объекта.
Для комплектных компонентов:
- EquippedAt (только для чтения) — где этот объект оснащен : None, DefaultHand, RightHand, LeftHand. При запуске в MeshBrowser это будет в сети.
- EquipTime (только для чтения) — то время, когда этот объект был оснащен. При запуске в MeshBrowser это будет в сети.
- IsActivated (только для чтения) — если этот объект находится в активированном состоянии. Допустимо только для объектов, которые не являются бросаемыми. При запуске в MeshBrowser это будет в сети.
- IsAiming (только для чтения) — если локальный аватар находится в состоянии цели при удержании этого объекта. Допустимо только для бросаемых.
- IsThrowing (только для чтения) — если локальный аватар активно создает объект. Допустимо только для бросаемых.
- IsEquipped (только для чтения) (только для чтения) — если этот объект в настоящее время оснащен аватаром. При запуске в MeshBrowser это будет в сети.
- IsThrowable — если этот объект можно вызвать.
- ThrowVelocity — скорость создания объекта при его освобождении.
Для манипульируемых изменений целевой позиции:
- Целевая позиция (только для чтения): целевая позиция тела при использовании режима принудительной силы по умолчанию в свойствах взаимодействия сетки
- Поворот целевого объекта (только для чтения): целевой поворот тела при использовании режима принудительной силы по умолчанию в свойствах взаимодействия сетки
- Положение удара Луча (только для чтения): положение отбрасываемого удара луча взаимодействия на теле
- Поворот луча (только для чтения): поворот взаимодействия вокруг направления луча
- Измененная целевая позиция (чтение и запись): используется для задания новой целевой позиции визуальным скриптом. Это переопределит целевую позицию по умолчанию. Рекомендуется переопределить это свойство:
- Использование изменения состояния целевой позиции. В этом случае визуальный скрипт будет запускать поток только при изменении взаимодействия и новой позиции.
- Использование в конце обновления. Если необходимо изменить целевое преобразование в каждом кадре, выполните его в конце обновления, чтобы новое целевое преобразование было доступно сразу в следующем кадре.
- Измененная целевая смена (чтение и запись): используется для задания нового целевого поворота визуальным скриптом. Это переопределит целевую позицию по умолчанию.