当前位置:   article > 正文

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

vrunity中api接口

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

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

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)) {
                //右边扳机抬起
            }      
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/792961
推荐阅读
相关标签
  

闽ICP备14008679号