Unity3D+VR的实现

发布时间:2019-07-04 10:05:31编辑:auto阅读(1158)

    针对CardBoard一类的眼镜用Unity3D开发VR内容。

    1、创建VRCamera:
    使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。

    2、对象选择:
    视选模式:从眼睛发射一条射线,选择看到的对象。
    手柄模式:蓝牙手柄上的按键来选择对象。

    3、视选模式的实现:
    视选:使用Raycast检测,RaycastHit返回碰撞到的物体信息。
    private RaycastHit rayHitInfo;
    public Transform goPoint;//为射线发出点,是两个摄像机中间的一个点。
    if (Physics.Raycast(goPoint.position, goPoint.forward, out rayHitInfo))
    {
    Debug.Log("RaySelect: " + rayHitInfo.collider.gameObject.name);
    }
    焦点:新建一个Plane,和Point放在同一个局部坐标系下,然后调整transform,使其放到视野中间,去选Mesh collider。
    给焦点开发动画效果:Texture循环播放。
    给视选设置一个停留时间:不是说看到某个物体就触发,而是盯着某个物体一定时间才触发。

    4、手柄模式的实现:
    检测手柄是否存在:
    if ((Input.GetJoystickNames().Length > 0) && (!Input.GetJoystickNames()[0].Equals("")))
    {
    //手柄存在
    }
    void Start ()
    {
    InvokeRepeating("detect", 0, 5);//每隔5s调用一次detect函数,做检测手柄动作。
    }
    检测手柄按键:
    if (Input.GetKeyDown(KeyCode.Joystick1Button0))
    {
    //手柄键1
    }
    else if (Input.GetKeyDown(KeyCode.Joystick1Button1))
    {
    //手柄键2
    }
    //以此类推
    设置并检测手柄摇杆:
    设置摇杆通过在input里面增加axis的手柄,4个方向,要新增设置四个。
    检测摇杆:
    if (Input.GetAxis("AxisName"))
    {
    //摇杆的一个方向
    }

关键字