Как переместить объект с помощью контроллера движения

#unity3d #mrtk

#unity3d #mrtk

Вопрос:

Используя MRTK V2 и c # scripting, мне нужно захватить и переместить объект (скажем, куб) вокруг камеры на том же расстоянии, на котором он был захвачен, и с кубом, обращенным к камере, чтобы изначально оставаться перпендикулярным камере. Я не знаю, ясно ли я…

Я не нашел какого-либо примера «захвата» MRTK v2, как это было в оригинальном MRTK, поэтому мне интересно, как это запрограммировать на самом деле. Я хочу повлиять на преобразование объекта, а не только использовать сценарий «interactable».

Я смог прочитать преобразование контроллера в начале и в конце движения, но мне интересно, как повлиять на преобразование целевого объекта, чтобы он оставался на фиксированном расстоянии от контроллера и оставался перпендикулярным контроллеру (выбранное лицо все еще обращено к камере).

Я пытался повлиять на преобразование целевого объекта и искать правильные вычисления, но безуспешно.

Есть идеи, с чего я мог бы начать поиск?

Ответ №1:

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

  1. Добавьте коллайдер к объекту, который вы хотите переместить.
  2. Добавьте обработчик манипуляций к вашему объекту
  3. Чтобы объект сохранял свое первоначальное вращение относительно вас, установите «Режим вращения одной рукой далеко» на «Поддерживать вращение для пользователя».
  4. Если вы хотите также иметь возможность захватывать объект напрямую (это для VR и HoloLens 2), затем добавьте компонент nearinteractiongrabable к вашему объекту.

Вот пример конфигурации, в которой я должен сделать куб подвижным:

введите описание изображения здесь

Пример использования манипуляционного манипулятора см. В разделе Лунный модуль или объекты Cheese в сцене HandInteractionExamples на AssetsMixedRealityToolkit.ExamplesDemosHandTrackingScenesHandInteractionExamples.unity

Комментарии:

1. Вау .. круто! Я должен это проверить. Есть ли у вас какие-либо рекомендации, если мы хотим переместить GameObject без использования этого конкретного случая?

2. После долгой возни с ним (там много вариантов!) Это именно то, что мне было нужно! Большое спасибо!

Ответ №2:

В дополнение к ответу Джулии выше, чтобы приблизиться к решению вашего требования: «… чтобы он оставался на фиксированном расстоянии от контроллера …» установите «Ограничение на движение» на «Фиксированное расстояние от головы». Я знаю, что это не полностью соответствует вашим заявленным требованиям, но это может быть достаточно близко.

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