废话不说 直接上代码
下面是Oculus quest右手手柄的按钮代码
if (OVRInput.GetDown(OVRInput.RawButton.RThumbstickUp))
{
hand_info.text = "手柄状态:摇杆上";
}
if (OVRInput.GetDown(OVRInput.RawButton.RThumbstickDown))
{
hand_info.text = "手柄状态:摇杆下";
}
if (OVRInput.Get(OVRInput.RawButton.RThumbstickLeft))
{
hand_info.text = "手柄状态:摇杆左";
}
if (OVRInput.Get(OVRInput.RawButton.RThumbstickRight))
{
hand_info.text = "手柄状态:摇杆右";
}
if (OVRInput.GetDown(OVRInput.RawButton.RIndexTrigger))
{
hand_info.text = "手柄状态:扳机键";
}
if (OVRInput.GetUp(OVRInput.RawButton.RIndexTrigger))
{
hand_info.text = "手柄状态:扳机键松开";
}
if (OVRInput.GetDown(OVRInput.RawButton.RHandTrigger))
{
hand_info.text = "手柄状态:侧边按键按下";
}
if (OVRInput.GetUp(OVRInput.RawButton.RHandTrigger))
{
hand_info.text = "手柄状态:侧边按键松开";
}
if (OVRInput.GetDown(OVRInput.Button.One))
{
hand_info.text = "手柄状态:按键A";
}
if (OVRInput.GetDown(OVRInput.Button.Two))
{
hand_info.text = "手柄状态:按键B";
}
Oculus quest手柄发射射线:
Ray ray = new Ray(Finger.transform.position, Finger.transform.forward);
Linerenerer.SetPosition(0, ray.origin);
if (Physics.Raycast(ray, out hit))//检测到物体
{
Linerenerer.SetPosition(1, hit.point);
}
射线检测功能可以直接用Ray ray = new Ray(起始点, 起始点的正方向),;这里注意的是Linerenerer的可见射线的起点方向要和 Ray射线的起点/方向一致:
Linerenerer射线起点:
Linerenerer.SetPosition(0, ray.origin);(ray.origin为Linerenerer射线的起点,也是ray射线的起点 )
Linerenerer射线终点:
Linerenerer.SetPosition(1, hit.point);(hit.point为ray射线检测到物体发生碰撞的点,也是Linerenerer射线的终点)
总的来说就是同一个点发射两条射线:一条射线Ray看不到,作用是进行射线检测,另一条射线看得到,作用是在VR场景中给体验者看到一条光线
Linerenerer组件挂物体上: