Так а почему положение меняет? Что имеено происходит в тв при взятии в руку? Какие действия производит Steam VR, чтобы его двигать/взять? Ответив на этот вопрос будет ясно, как это обойти (никто ведь не запрещает править компоненты Steam VR).
Я со Steam VR давно работал, так что не знаю, как так сейчас всё устроено. Но скажем в Oculus в подобных ситуациях, я создаю свои, обходные пути.
Например, если при взятии в руку отключается физика объекта, игнорируется коллайдер объекта в руках, то его можно включить принудительно после своим скриптом. Но вероятно это поломает взаимодействие с другими компонентами, например, если на виртуальной руке есть коллайдеры, они начнут "бить" друг друга.
Тогда я вижу такой выход:
Cоздать вспомогательный объект для объекта (тв) в руках. Он будет родителем. У него будет свой коллайдер, что реагирует на физику окружения и на действие "взять".
Берем в руки - физика/коллайдер отключится SteamVR'ом, и в этот момент включаем другой, отключенный ранее коллайдер (и/или Rigidbody), на основном, дочерном объекте (на тв), что реагирует на физику окружения но НЕ на "руки" и команду "взять", не на SteamVR.
И включаем свой скрипт (или joint), что уберет родителя и будет двигать физикой объект (тв) за вспомогательным объектом (бывшим родителем) в руках. Тогда тв будет и на препятствия натыкаться, "уползать" из рук, и в тоже время следовать за позицией "в руках".
При отпускании объекта (тв) вспомогательный перемещается на позицию основного объекта (тв), копирует значения физики (ускорение), выключает у объекта (тв) его физику и становится родителем.
Как-то так. И я так делал когда-то в Окулусе, чтобы объект в руках оставался с физикой.
Но начните все же с изучения причин, может достаточно пару строк поменять в самом СтимВР, чтобы заработало
И с документации и гугла, т.к. вы явно не первый, кто этот вопрос задаёт, и уже должны быть ответы. Может где-то достаточно галочку поставить или компонент навесить, чтобы работало. Мой алгоритм это для ситуации, когда иных вариантов нет.