#unity3d #mrtk
#unity3d #mrtk
Вопрос:
Используя MRTK V2 и c # scripting, мне нужно захватить и переместить объект (скажем, куб) вокруг камеры на том же расстоянии, на котором он был захвачен, и с кубом, обращенным к камере, чтобы изначально оставаться перпендикулярным камере. Я не знаю, ясно ли я…
Я не нашел какого-либо примера «захвата» MRTK v2, как это было в оригинальном MRTK, поэтому мне интересно, как это запрограммировать на самом деле. Я хочу повлиять на преобразование объекта, а не только использовать сценарий «interactable».
Я смог прочитать преобразование контроллера в начале и в конце движения, но мне интересно, как повлиять на преобразование целевого объекта, чтобы он оставался на фиксированном расстоянии от контроллера и оставался перпендикулярным контроллеру (выбранное лицо все еще обращено к камере).
Я пытался повлиять на преобразование целевого объекта и искать правильные вычисления, но безуспешно.
Есть идеи, с чего я мог бы начать поиск?
Ответ №1:
Вы можете добавить обработчик манипуляций к объекту, который хотите переместить. Вот несколько примеров шагов:
- Добавьте коллайдер к объекту, который вы хотите переместить.
- Добавьте обработчик манипуляций к вашему объекту
- Чтобы объект сохранял свое первоначальное вращение относительно вас, установите «Режим вращения одной рукой далеко» на «Поддерживать вращение для пользователя».
- Если вы хотите также иметь возможность захватывать объект напрямую (это для VR и HoloLens 2), затем добавьте компонент nearinteractiongrabable к вашему объекту.
Вот пример конфигурации, в которой я должен сделать куб подвижным:
Пример использования манипуляционного манипулятора см. В разделе Лунный модуль или объекты Cheese в сцене HandInteractionExamples на AssetsMixedRealityToolkit.ExamplesDemosHandTrackingScenesHandInteractionExamples.unity
Комментарии:
1. Вау .. круто! Я должен это проверить. Есть ли у вас какие-либо рекомендации, если мы хотим переместить GameObject без использования этого конкретного случая?
2. После долгой возни с ним (там много вариантов!) Это именно то, что мне было нужно! Большое спасибо!
Ответ №2:
В дополнение к ответу Джулии выше, чтобы приблизиться к решению вашего требования: «… чтобы он оставался на фиксированном расстоянии от контроллера …» установите «Ограничение на движение» на «Фиксированное расстояние от головы». Я знаю, что это не полностью соответствует вашим заявленным требованиям, но это может быть достаточно близко.
Если вам действительно нужно выполнить все ваши заявленные требования, вам может потребоваться подумать о внедрении пользовательского «решателя».