#c# #unity3d #htc-vive #steamvr
#c# #unity3d #htc-vive #steamvr
Вопрос:
Я привязываю трекер HTC Vive к реальному объекту, чтобы использовать этот объект в игре. Трекер находится в самой игре, и движение и вращение обновляются совершенно нормально. Но проблема в том, чтобы заставить входные данные работать. Контакты трекера подключены правильно, и ввод можно увидеть работающим в отладчике ввода в инструменте привязки ввода SteamVR.
Я пытался найти какую-либо помощь в Интернете, но, похоже, все устарело. Сам контроллер работает с добавленной мной функцией пользовательского ввода, но трекер отказывается работать. Ошибок вообще нет. Код просто вызывает функцию shoot, чтобы выпустить пулю из пистолета. Входные данные принимаются контроллером, ими обоими, но трекер, который имеет точно такие же настройки, что и контроллеры, похоже, не работает.
[SerializeField] private GunScript gunScript;
[SerializeField] private SteamVR_Action_Boolean input;
void Update()
{
if (input.stateDown)
{
gunScript.Shoot(gunScript.ShotTransform.rotation);
}
}
Текущий выходной сигнал срабатывает при использовании триггера, который устанавливается в инструменте привязки ввода при использовании обычного контроллера, но при нажатии на триггер, подключенный к трекеру, ничего не происходит, ошибок тоже нет.
Ответ №1:
// on start
var allDevices = new List<InputDevice>();
InputDevices.GetDevices(allDevices);
InputDevice tracker = allDevices.FirstOrDefault(d => d.role == InputDeviceRole.HardwareTracker);
// on update
tracker.TryGetFeatureValue(CommonUsages.devicePosition, out var pos);
tracker.TryGetFeatureValue(CommonUsages.deviceRotation, out var rot);
// NOTE!!! pos and rot are in world position so you have to translate it to floor
Ответ №2:
SteamVR_Action_Boolean.stateDown
является ли ярлык дляSteamVR_Input_Sources.Any
но, как вы можете видеть в SteamVR_Input_Sources, там вообще нет записи для трекеров, поэтому также Any
не будет получен ввод трекера.
Существует множество руководств о том, как получить входные данные контроллера, но я также не смог найти ничего о получении ввода кнопок для трекеров Vive. По-видимому, это не предназначено…
Это имеет смысл, поскольку кнопка также является кнопкой подключения / питания трекера… вероятно, было бы не очень хорошей идеей заставлять пользователя нажимать эту кнопку, чтобы запустить некоторые действия.
В своих рекомендациях HTC_Vive_Tracker они указывают на
Если у вас возникнут проблемы с включением VIVETracker (2018) на Unityor Unreal, обратитесь к следующим ссылкам:
- Для разработчиков Unity 3D:
- Ссылка для загрузки пакета Viveinputility: AssetStore или GitHub
- Репозиторий исходного кода утилиты ввода Vive:https://github.com/ViveSoftware/ViveInputUtility-Unity
Может быть, там есть что-то полезное, хотя, похоже, это также больше для контроллеров и т.д. не для получения входных данных с помощью кнопки трекера.