Как исправить движение взаимодействующих объектов, если они не взаимодействуют без добавления гравитации - PullRequest
0 голосов
/ 22 января 2019

VR-ориентированная игра в dev.У меня реализован скрипт манипуляции двумя руками из MRTK, который взаимодействует с моими объектами.Цель состоит в том, чтобы позволить объектам оставаться статичными в их положении после взаимодействия - теоретически работающий.Как только я добавлю столкновение со своей средой (Hardbody @ InteraableGameObjects).Но как только я начинаю взаимодействовать с ними и позволяю им активно сталкиваться с одним из объектов пейзажа, они начинают наклоняться и плавать, не желая останавливаться.

Поэтому я ищу легкий и не требующий ресурсовспособ остановить любое движение (перемещение, вращение) моего объекта после взаимодействия с ним - без добавления гравитации к нему.Моя главная задача не в том, чтобы остановить все движение, так как я мог бы заморозить все ограничения жестких тел объектов или установить Rigidbodys Velocity и angularVelocity = 0.

Так что моя основная идея: "if (движение! = 0), а если (объект! = схватил), то вызвать движение = заморозить. "Не выяснили, как вызвать событие такого рода и как проверить, был ли предмет захвачен или нет.Или, может быть, есть еще более простой способ?

Спасибо за любую помощь!

Примечание: даже если вы возьмете образец сцены двуручного манипулирования и добавите к компонентам ridigbodys, они начнут плавать безлюбое взаимодействие.

До сих пор пробовал: Приведение образца сцены в тех же условиях

Ожидайте против результата: плавающие объекты вместо того, чтобы оставаться неподвижными в пространстве.

1 Ответ

0 голосов
/ 22 января 2019

Вы можете использовать RigidbodyConstraints , чтобы зафиксировать положение и вращение объекта, сохранив свойства столкновения.

GetComponenet<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;

и разморозить:

GetComponenet<Rigidbody>().constraints = RigidbodyConstraints.none;
...