​ 由于今年的VR职业技能竞赛突然变更VR设备以及相关VR开发的SDK,由原来的Samsung Gear(Oclus SDK)变更为Pico G2 4K(Pico SDK)。

​ 所以,理所当然的我们只能重新学习Pico SDK的使用了,但是Pico它本身的产品的知名度不是很高,网上能找到的资料也非常有限。官方提供的开发文档也只是粗略的列举了部分API,剩下的只能靠自己去啃SDK的源码了。(C#菜鸡落泪)

常用API

硬件按键说明:http://sdk.picovr.com/docs/sdk/cn/chapter_five.html (含头盔按键和手柄按键)

手柄类

  • APP按键

    按下APP按键时调用

    示例:

    1
    2
    3
    4
    5
    if (Controller.UPvr_GetKeyDown(0,Pvr_KeyCode.APP))
    {
    //此处写方法体
    test.text = "APP is on!";
    }

  • Home按键

    按下手柄上的Home键时调用

    示例:

    1
    2
    3
    4
    5
    if (Controller.UPvr_GetKeyDown(0,Pvr_KeyCode.HOME))
    {
    //此处写方法体
    test.text = "home is on!";
    }

  • TOUCHPAD触摸板

    触摸板有多个API,有Controller.UPvr_GetKeyDown(0,Pvr_KeyCode.TOUCHPAD)触摸板被按下,Controller.UPvr_IsTouching(0)正在被触摸,以及TouchPadClick,还有触摸板滑动。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
            //触摸板滑动示例
    //获取滑动
    SwipeDirection swipe = Controller.UPvr_GetSwipeDirection(0);
    if (swipe==SwipeDirection.SwipeDown)//判断滑动方向是否向下
    {
    test.text = "swipe is down!";
    current_obj.transform.Rotate(Vector3.down);
    }
    if (swipe==SwipeDirection.SwipeLeft)//判断是否向左
    {
    test.text = "swipe is left!";
    current_obj.transform.Rotate(Vector3.left);
    }
    if (swipe==SwipeDirection.SwipeRight)//判断是否向右
    {
    test.text = "swipe is right";
    current_obj.transform.Rotate(Vector3.right);
    }
    if (swipe==SwipeDirection.SwipeUp)//判断是否向上
    {
    test.text = "swipe is up!";
    current_obj.transform.Rotate(Vector3.up);
    }


头盔类

调用方法与上面手柄按键的调用方法稍微有点不同,比如头盔的确认键:

1
2
3
4
5
6
      //头盔确认键
if (Input.GetKeyDown(KeyCode.JoystickButton0))
{

}

头盔按键的映射存在unity自带的input类中,头盔其余按键调用方式均与本示例一致。