Как переместить объект с помощью контроллера движения
Используя сценарии MRTK V2 и C#, мне нужно захватить и переместить объект (скажем, куб) вокруг камеры, на то же расстояние, на котором он был захвачен, и чтобы куб был направлен в сторону камеры, чтобы изначально оставаться перпендикулярным камере. Я не знаю, ясно ли мне...
Я не нашел какого-то "захватывающего" примера MRTK v2, как это было в оригинальном MRTK, поэтому мне интересно, как на самом деле это запрограммировать. Я хочу влиять на преобразование объекта, а не только использовать "интерактивный" скрипт.
Я смог прочитать преобразование контроллера в начале и в конце движения, но мне интересно, как повлиять на преобразование целевого объекта, чтобы он оставался на фиксированном расстоянии от контроллера и оставался перпендикулярно контроллер (выбранное лицо по-прежнему обращено к камере).
Я пытался повлиять на преобразование целевого объекта и искал правильный расчет, но безуспешно.
Любая идея, где я мог бы начать искать?
2 ответа
Вы можете добавить ManipulationHandler к объекту, который вы хотите переместить. Вот несколько примеров шагов:
- Добавьте Box Collider к объекту, который вы хотите переместить.
- Добавьте ManipulationHandler ваш объект
- Чтобы объект сохранял свое первоначальное вращение относительно вас, установите "Режим поворота одной рукой на большее" на "Поддерживать вращение на Пользователе".
- Если вы также хотите иметь возможность захватить объект напрямую (это для VR и HoloLens 2), то добавьте компонент NearInteractionGrabbable к вашему объекту.
Вот пример конфигурации, которую я должен сделать кубом подвижным:
Для примера того, как используется ManipulationHandler, см. Объекты Lunar Module или Cheese в сцене HandInteractionExamples по адресу Assets\MixedRealityToolkit.Examples\Demos\HandTracking\Scenes\HandInteractionExamples.unity
В дополнение к ответу Джулии, приведенному выше, чтобы приблизиться к выполнению вашего требования: "... чтобы оно оставалось на фиксированном расстоянии от контроллера...", установите "Ограничение на движение" на "Фиксированное расстояние от головы". Я знаю, что это не полностью отвечает вашим заявленным требованиям, но может быть достаточно близко.
Если вам действительно нужно выполнить все ваши заявленные требования, вам, возможно, придется подумать о реализации пользовательского "Солвера".