Мы строим бильярд 3D VR, и мы боремся с Cue-Stick.
Мы стараемся максимально использовать интерактивные сценарии steamVR.
Я прикрепляю кий к руке с помощью
hand.AttachObject(gameObject, GrabTypes.Grip, Hand.AttachmentFlags.VelocityMovement, Pivot.transform);
Смещение (Pivot.transform
здесь важно, потому что мы хотим прикрепить объект к правильному положению (которое определяется повремя выполнения, в зависимости от того, куда пользователь кладет руку при захвате). Поскольку кий-джойстик перемещается с использованием скоростей, а не с помощью родительских функций, позиция захвата не всегда будет на флешке (у флешки есть перетаскивание, столкновение и т. д.). Это довольнонарушение погружения. Чтобы компенсировать эту проблему, скрипт Intractable имеет логическое значение для Hand Follow Transform
, которое было бы идеально для исправления этого. К сожалению, Рука теперь переходит к средней точке (началу) Cue, даже если мы взяли его где-то совершенно другое. Он по-прежнему ведет себя так, как и должен, но визуально это очень сбивает с толку.
SteamVR Intractable поддерживает смещение при присоединении, но забывает об этом смещении при позиционировании руки.
Есть что-то, чего мне не хватает? Или это просто не вещь?
Я прочитал хотя сценарий сОды несколько раз, и это швы, как смещение не доступно в области, где находится рука. Так что швы никоим образом не могут сработать.
Как я могу решить эту проблему?
Я попытался вернуться к простому воспитанию руки, но это делает физические взаимодействия между Cue и шариками в стиле фанк. Я также прочитал большую часть сценариев Interactable
и Hand
, чтобы понять, что происходит, кроме того, что соглашения по именованию клапанов немного повредили мне, но мне не удалось найти способ. Я довольно поражен этим, и я вижу хороший шанс, что я что-то упускаю.
Что, вероятно, возможно, это установить точку присоединения руки в правильное место на Cue, но это преобразование помещено в префаб RightHand
(и слева), оно выглядит как очень плохая идеячтобы изменить это преобразование в каждом кадре или добавить его в родительский объект игры Cue.
Есть ли лучший способ?