在安装完Oculus的插件后,能在Assets/Oculus/文件夹下看到插件包含的所有资源和脚本。当然有耐心的话,可以配合官方文档一起一个一个去看,另一方面在Assets/Oculus/SampleFramework/Usage下有官方搭建的几个demo场景,实现和演示了一些基本功能。可以直接将场景打包出来放实机里看看效果。
有以下几个场景:
1.AppDeeplink : 演示从游戏内外联到其他APP上
2.CustomControllers: 演示VR相机和Touch控制器
3.CustomHands:演示VR相机和虚拟手
4.DebugUI:演示在场景里做Debug显示,因为Quest2好像都要打包出来测试。
5.DistanceGrab:演示远程抓取
6.HandsInteractionTrainScene:演示手部追踪。注意在打包时要把Hand Tracking Support改成Hands only或者Controller And Hands。默认时Controller only的会没有效果。感觉这是几个演示场景里最有趣的
7.Locomotion:演示基本移动方法
8.MixedRealityCapture:混合现实的演示,没试过。应该是用来做外部拍摄视频把人像合成到游戏场景里的演示。
9.OVROverlay:UIOverLay效果的演示。开启OverLay,就会让UI永远显示再最前面,可能会因为距离不匹配造成UI的违和感。

这次我们利用CustomHands场景来实现VR里的基本交互——看和抓取,最后实现一个类似打棒球的基本演示。
首先复制CustomHands场景并重命名为其他名字,然后双击打开它。
在场景里只有个地板和OVRCameraRig的预制体实例。

1.实现看的功能

OVRCameraRig是提供了Oculus优化的VR摄像机是Oculus插件里用来实现VR显示的最基本的物体,来取代unity原生的Camera。在结构上有6个Anchor用来表示追踪左右眼,两眼中心,身体和左右控制器。只要在场景里放入一个这个物体,就可以实现基本的VR四处看的功能。

接着看下OVRCameraRig上的脚本。
OVRCameraRig.cs //用来控制3D渲染和头显定位的脚本
OVRManager.cs //VR头显主要的interface
OVRHeadsetEmulator.cs //用来在unity里开发时用按键模拟头显转动

至此已经实现了看的功能。

2. 实现碰和抓

在OVRCameraRig的LeftHandAnchor/RightHandAnchor下有附加的预制体实例——CustomHandLeft/Right用来实现手部的模拟。我们来看下这个物体的结构

根物体上挂着主要的控制脚本,一个是OVRGrabber.cs 用来实现抓,一个是Hand.cs用来控制手模型的动画。
GripTrans控制抓到物体的位置
GrabVolume是用来检测抓的碰撞盒。
最后一个是手部模型

1.碰的功能:
由于在手部预制体上已经有了刚体和子物体上的碰撞盒,所以自动可以实现碰撞有碰撞盒的物体。
2.抓的功能
在这个预制体上也已经挂有了插件里实现的抓的OVRGrabber脚本。
但光有抓取脚本不行,要在被抓取物体上挂上能被抓的OVRGrabbable脚本,同时被抓取物体要有碰撞盒和刚体。
于是,看和抓两个功能就实现了。

3.做一个棒球小demo

1.做一个球
在场景里拖一个Sphere,在上面挂上RigidBody和sphereCollider 。
为了实现弹性碰撞,创建一个物理材质,将bounciness设为1。
2.做一个发球器
在场景里拖一个Cube,再这个cube下拖一个空物体作为发射点,摆好位置。随手写一个每几秒发射一个球的脚本。

public class PitchingMachine : MonoBehaviour
{[Tooltip("球的引用")]public Rigidbody Ball;[Tooltip("发射点")]public Transform Point;[Tooltip("发射间隔时间")]public float delayTime;[Tooltip("发射力量")]public float force;private float timer;private void Awake(){timer = delayTime;}void Update(){timer += Time.deltaTime;if (timer >= delayTime){Ball.gameObject.SetActive(true);Ball.transform.position = Point.position;Ball.AddForce(Vector3.back * force,ForceMode.Impulse);timer = 0;}}
}

3. 做一个球棒,调整抓取的设置
拖一个cube,调整大小形成一个球棒的形状。
挂上OVRGrabbable脚本,将上面的AllowOffHandGrab关闭。
再将之前在两只手模型上的ParentHeldObject打开。

4.打包运行

Unity上的Oculus Quset2开发(2) —— 在VR里打棒球相关推荐

  1. Unity上的Oculus Quest2开发(1) ——首先要空工程能在Quest上跑起来吧

    其实一开始赋闲在家思考转行的时候,就也想去搞搞VR开发.之后的报unity培训班一半也是基于这个目的.但当时VR基本是PCVR,PSVR.要么要高配PC,要么要主机的开发机.在培训班也只是讲了一点皮毛 ...

  2. Unity + StepVR 空间定位 + Oculus Quest 头盔 + VRTRIX 手套 全套开发记录

    Unity + StepVR 空间定位 + Oculus Quest 头盔 + VRTRIX 手套 全套开发记录 前言 一.开发环境搭建,开发前准备 1.总体的软件,硬件准备 2.关于Unity的准备 ...

  3. 如何在Unity上开发Nintendo(任天堂)Switch平台游戏时让游戏patch包大小尽量小

    如何在Unity上开发Nintendo(任天堂)Switch平台游戏时让游戏patch包大小尽量小 众所周知,Nintendo Switch有一条guidline-0123来限制游戏的patch包大小 ...

  4. XboxOne的kinect在Unity上的开发——安装与调试

    这次我来说一下Xbox上游戏的开发,介绍一下Kinect在Unity上的使用. 首先,我们看一下Kinect.它是一种3D体感摄影机,同时它导入了即时动态捕捉.影像辨识.麦克风输入.语音辨识.社群互动 ...

  5. UNITY OCULUS QUEST开发入门教程 1 - 准备篇

    随着OCULUS QUEST2在市场获得的现像级大反响,VR正逐步从硬核玩家走向普通大众. 作为UNITY开发者的你,是否对OCULUS QUEST VR开发也感兴趣呢,那么不仿一起来跟着我们的教程来 ...

  6. 浅谈Unity与VR产业,用Unity开发第一款VR应用

    部分内容为整合与装载 浅谈VR VR(Virtual Reality的缩写,中文翻译-虚拟现实)概念早在80年代初就被提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段. 中国 ...

  7. Unity网络多玩家游戏开发教程(上册)

    Unity网络多玩家游戏开发教程(上册) 试读文档下载地址:http://pan.baidu.com/s/1jGwwxam Unity作为强大的游戏开发平台,为网络游戏的的开发提供大量的组件和API. ...

  8. Unity网络多玩家游戏开发教程第1章Unity自带网络功能

    Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说 ...

  9. Unity VS Unreal,游戏开发该如何选择引擎?

    一.引擎的介绍 随着游戏开发的不断进步,游戏开发越来越庞大复杂,因此游戏引擎已经成为游戏开发必不可少的工具.引擎对基本的功能封装,对工具链的提供等都可以大幅降低游戏引擎的开发难度,提高开发速度和质量. ...

最新文章

  1. 错误笔记(1)——关于克隆虚拟机引发的后续问题
  2. SolrPerformanceFactors--官方文档
  3. es过滤html标签,Elasticsearch 分词器
  4. java -jar 和 java -cp用法
  5. ios macos_设计师可以从iOS 14和macOS Big Sur中学到什么?
  6. hbase shell远程连接_hbase与phoenix集成
  7. (小费马定理降幂)Sum
  8. 设备名称和设备责任人输出写反了,重新写了,重新发送邮箱
  9. 多目标数据关联基本方法
  10. fastDFS引入jar包后日志冲突
  11. SC-RoadDeepNet学习笔记
  12. 基于51单片机超声波测距仪设计倒车雷达防撞报警器
  13. rgba与十六进制的相互转换,以及rgba的校验
  14. qt.qpa.plugin: Could not load the Qt platform plugin xcb in /root/PycharmProjects/pythonPr
  15. 自行车电动自行车|GCC认证办理流程
  16. 【推荐】文婧@若凡上传的经典视频(陆续更新)
  17. python----小计买书问题
  18. skfuzzy.cmeans与sklearn.KMeans聚类效果对比以及使用方法
  19. 认识黑客常用的入侵方法
  20. linux探针,存活探针(Liveness)、就绪探针(Readiness)、启动探针(Startup)、容器钩子

热门文章

  1. android 支付宝月账单 统计图_支付宝年度账单也太敷衍了!
  2. android libbfaac.so,Android中Json数据读取与创建
  3. linux socket read 接受缓存为空_Linux直接IO、缓存IO、阻塞与同步?
  4. 对python的意思_python的意思
  5. 螺旋矩阵c++语言_一起刷 leetcode 之螺旋矩阵(头条和美团真题)
  6. python设置文件权限_Python os.chmod() 方法
  7. 全网唯一C++调用由com组件生成的dll教程
  8. 实地址模式下的中断向量表
  9. 节点大小可变的环形队列实现
  10. FD.io VPP:CentOS7下构建自己的VPP RPM包