VR开发——Unity中的VR Api的介绍(**V客学院**)

来源:互联网 发布:织梦模板html源码 编辑:程序博客网 时间:2024/05/17 18:04

VR开发——Unity中的VR Api的介绍(V客学院

今天我们来讲一讲Unity中的原生VR支持。Unity的原生支持虽然没有SteamVR插件和其扩展插件VRTK好用,但是贵在简单,可以和Unity进行无缝连接。

Api中的结构

图中是Unity文档中关于VR的相关API,我们一个个来学习:
1.InputTracking 文档如下

这里写图片描述

静态变量:

disablePositionalTracking 用来设定是否追踪位置: True/False 启用/关闭

静态方法:

GetLocalPosition 获取某个节点的本地位置 传入参数类型:VRNode 类型

GetLocalRotation 获取某个节点的本地旋转 传入参数类型:VRNode 类型

GetNodeName 根据节点ID返回其名称 传入参数类型:uLong 类型

GetNodeStates 获取指定节点列表的状态信息

Recenter 跟踪头盔的当前位置和方向。

事件:

nodeAdded 当跟踪的节点添加到底层的VR / AR系统时调用。
nodeRemoved 当跟踪的节点从底层的VR / AR系统中删除时调用。
trackingAcquired 跟踪节点开始报告跟踪信息时调用。
trackingLost 跟踪节点停止报告跟踪信息时调用。

使用:
代码需要引用UnityEngine.VR

    /// <summary>    /// 左右控制器,放手部的模型    /// </summary>    public GameObject _Hander_Left = null;//使用之前请先在Unity指定一个物体,没写保护    public GameObject _Hander_Right = null;//使用之前请先在Unity指定一个物体,没写保护    //控制手柄相关操作    void MonitoringDeviceInput()    {     //检测设备输入,如果获得Joystick设备名称列表的长度大于0的时候,且 列表中的第一个元素名称不为空值,表示检测到外部输入设备      //手柄存在,每一次在进行操作之前,得把设备的数量确认,防止BUG存在,使用一个变量来接收此数据     int joyNum = Input.GetJoystickNames().Length;    //追踪头盔的位置和方向                InputTracking.Recenter();    //追踪手柄的位置和旋转,改变手柄的相对位置,和相对旋转    _Hander_Left.transform.localPosition = InputTracking.GetLocalPosition(VRNode.LeftHand);    _Hander_Right.transform.localPosition = InputTracking.GetLocalPosition(VRNode.RightHand);    _Hander_Left.transform.localRotation = InputTracking.GetLocalRotation(VRNode.LeftHand);    _Hander_Right.transform.localRotation = InputTracking.GetLocalRotation(VRNode.RightHand);              //以下是手柄上一部分的操作触发    if (Input.GetKeyDown (KeyCode.Joystick1Button8)) {                //左边圆盘按下            }     if (Input.GetKeyDown (KeyCode.Joystick2Button9)) {                //右边圆盘按下            }     if (Input.GetKeyDown (KeyCode.Joystick1Button14)) {                //左边扳机按下                }     if (Input.GetKeyUp (KeyCode.Joystick1Button14)) {                //左边扳机抬起            }     if (Input.GetKeyDown (KeyCode.Joystick2Button15)) {                //右边扳机按下                }     if (Input.GetKeyUp (KeyCode.Joystick2Button15)) {                //右边扳机抬起            }          }

最后,以上这段逻辑插入Update执行,由于是追踪的本地,那么手柄模型、摄像机得放在同一个父物体下,代码也在父物体上。

在项目中去试一试吧!记得勾选VR支持!

这里写图片描述
谢谢大家!请关注我们V客学院的二维码哦!

阅读全文
0 0