我正在将HTC Vive追踪器安装到现实生活中的对象,以便在游戏中使用该对象。可以在游戏本身中找到跟踪器,并且可以很好地更新运动和旋转。但是,使输入起作用是这里的问题。跟踪器的针脚已正确连接,并且可以在SteamVR输入绑定工具的输入调试器中看到输入正常工作。
我试图在互联网上找到任何帮助,但一切似乎都已过时。控制器本身可以与我添加的自定义输入功能一起使用,但跟踪器拒绝使用。完全没有错误。该代码仅调用射击功能将子弹从枪中射出。两者都由控制器接收到输入,但是与控制器具有完全相同设置的跟踪器似乎不起作用。
[SerializeField] private GunScript gunScript;
[SerializeField] private SteamVR_Action_Boolean input;
void Update()
{
if (input.stateDown)
{
gunScript.Shoot(gunScript.ShotTransform.rotation);
}
}
使用普通控制器时,使用输入绑定工具中设置的触发器时,当前输出确实会开火,但是按下跟踪器附带的触发器时,则不会发生任何事情,也不会出错。
答案 0 :(得分: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
答案 1 :(得分:0)
的快捷方式
SteamVR_Action_Boolean.stateDown
是SteamVR_Input_Sources.Any
但是正如您在SteamVR_Input_Sources中看到的那样,跟踪器根本没有条目,因此Any
也不会获得跟踪器输入。
关于如何获取控制器输入,有很多教程,但是我也找不到有关为Vive Trackers获取按钮输入的任何信息。显然这不是故意的...
这是有道理的,因为该按钮也是Trackers的连接/电源按钮...让用户按下该按钮以触发某些操作可能不是一个好主意。
在他们的HTC_Vive_Tracker Guidelines中,他们指向
如果在Unityor虚幻引擎上启用VIVETracker(2018)时遇到问题,请参考以下链接:
- 对于Unity 3D开发人员:
- ViveInputUtility软件包的下载链接:AssetStore或GitHub
- Vive Input Utility源代码存储库:https://github.com/ViveSoftware/ViveInputUtility-Unity
也许有一些有用的东西,尽管似乎这对于控制器等也更多,而不是为了获取Tracker的按钮输入。