【发布时间】:2017-04-20 18:33:35
【问题描述】:
我想在我的 VR 游戏中简单地从用户那里获得控制器输入,并且我还想使用 SteamVR 交互系统,这样我就可以实现简单的 UI 内容。但是,我无法通过 Hand 脚本从控制器获取输入。
我所做的只是拖入“Player”预制件,然后编写一个脚本来处理 Hand 对象以从触发器获取输入。
private Hand _hand; // The hand object
private SteamVR_Controller.Device controller; // the controller property of the hand
void Start ()
{
// Get the hand componenet
_hand = GetComponent<Hand>();
// Set the controller reference
controller = _hand.controller;
}
void Update ()
{
// === NULL REFERENCE === //
if ( controller.GetHairTrigger())
{
Debug.Log ("Trigger");
}
}
这给了我一个“控制器”对象的空引用异常。我还尝试在OnEnable() 和Awake() 中获取控制器组件,但这也不起作用。即使在Update()。所以出于某种原因,SteamVR 的Hand 类不包含对控制器的引用。我做错了什么吗?当我得到控制器时,我是否缺少某种索引规范?
我能够像这样获得控制器输入:
private SteamVR_TrackedObject trackedObj; // The tracked object that is the controller
private SteamVR_Controller.Device Controller // The device property that is the controller, so that we can tell what index we are on
{
get { return SteamVR_Controller.Input((int)trackedObj.index); }
}
private void Awake()
{
// Get the tracked object componenet
trackedObj = GetComponent<SteamVR_TrackedObject>();
}
void Update()
{
if(Controller.GetHairTrigger()){
Debug.Log("hey trigger");
}
}
但是我不能使用交互系统。有人知道吗?
【问题讨论】:
标签: c# unity3d steam virtual-reality