VRTK案例001~010
来源:互联网 发布:burpee 知乎 编辑:程序博客网 时间:2024/04/28 17:37
VRTK这个工具包提供了许多unity引擎中VR常用的功能,诸如(但不局限于):
- 用常用别名封装的控制器按钮事件
- 控制器世界光标指针(eg.镭射光标steamVR_LaserPointer)
- 玩家传送机制
- 用控制器抓取/握住游戏对象
- 用控制器和游戏对象交互
- 把游戏对象转化为可交互的UI元素
001-CameraRig_VR_PlayArea
展示[CameraRig]预设用法的简单场景,实际上就是对VR_PlayArea的简单设置。
002-Controller_Eventsduiying
还是001的场景,不同的是它控制器的事件进行了封装,便于在使用时进行调用,同时还在该事件触发时打印到控制台窗口。一旦触发对应的控制器事件就会在Console窗口显示。
脚本VRTK_ControllerEvents:(为我们提供控制器事件,即发出对应的事件)负责处理游戏控制器发出的事件,所以绑定在每一个控制器对象上,这样才能实时进行手柄按钮事件的监听(系统按钮除外:因为它是专门为Steam平台菜单预留的按钮,无法被重写)。
当一个控制器按钮被按下的时候,脚本会发送一个事件来表明这个按钮已经被按下了,这样做的好处是允许其他脚本在无须实现任何控制器逻辑的情况下就能监听这个事件,这就是所谓的解耦。
Trigger_Hairline:扳机微扣
Trigger_Touch:扳机触摸
Trigger_Press:扳机按下
Trigger_Click:扳机单击
Grip:手柄按钮
Touchpad_Touch:触摸板触摸
Touchpad_Press:触摸板按下
Application_Menu:应用菜单
Pointer Toggle Button:用来开关镭射光标的按钮,默认触摸板按下
Pointer Set Button:用来设置目的地标志的按钮,默认触摸板按下
Grab Toggle Button:用来抓取游戏对象的按钮,默认为手柄按钮
Use Toggle Button:设置使用游戏对象按钮,默认为扳机单击。
UI Click Button:用来点击UI元素按钮,默认为扳机单击。
Menu Toggle Button:用来调出游戏菜单的按钮,默认为应用菜单
Axis Fidelity:轴发生改变时的保真值,默认为1 。任何大于2的数值将有可能给出过于敏感的结果
003-Controller_SimplePointer
VRTK_SimplePointer:继承自VRTK_WorldPointer,又接着继承VRTK_DestinationMarker,继承MonoBehaviour。
在按下触摸板的时候从控制器上发射一条镭射光线,在碰撞到其他对象的时候会有一个光标指针,这个光标事件同样会打印到控制台窗口。()从控制器前端发射一条射线,射线指向的游戏对象就是我们选中的对象,然后用其他按钮来触发一些操作。
默认扳机键开关,要在VRTK_ControllerEvents里的pointer Toggle Button来改,因为整个事件都是通过该脚本来触发的,SimplePointer只是对事件进行监听。
Enable Teleport:光标指针获取新的目的地时能否传送过去。
抽象类:我们在写某个功能的时候,为了让这个功能可以很方便地重写和扩展,保持对象的一致性和方法的稳定性,就有了抽象类。
抽象层如何派生具象类的?
指针的原理其实很简单,标记一个终点,然后从原点发出一条射线,去获取碰撞到的点。原点就是获取当前的位置,这个很简单,所以指针的脚本主要都是在做终点标记的事情,中途无非是渲染光线懂得过程,所以抽象类就是标记重点VRTK_DestinationMarker.
004-CameraRig_VR_BasicTeleport
在003的基础上新增了简单版本的传送功能。
VRTK_Basic Teleport:按下触摸板发射镭射光线,松开触摸板时就会传送到光标所在的位置。
梳理一下流程:监听控制器事件——指针射线——重点标记——验证是否为有效传送点+传送(就是把CameraRig的位置设置为目标传送点的位置)
005-Controller_BasicObjectGrabbing
控制器触摸场景中物体时,物体高亮,扣动扳机即可抓起该物体,同时你可以做一个扔出去的动作,可以给该物体一个加速度,再松开扳机,即可把对象扔出去。
互动对象上再添加VRTK_Interactable脚本组件。
抓取逻辑:1,控制释放事件后立即执行器上的四个脚本组件
VRTK_Controller Events:(为我们提供控制器事件,即发出对应的事件)
VRTK_Controller Actions:控制器动作
VRTK_Interact Touch:触摸,触摸时可以配置是否隐藏控制器以及全局高亮颜色
2,对控制器按钮事件进行监听,监听到抓取和释放
006-Controller_UsingADoor
实现开关门功能
在抓取的四个脚本添加之后,又添加了VRTK_Interact Use(按下控制器上默认的扳机键来使用一个对象,释放该按钮停止使用该对象。).
在使用VRTK_Interact Use的前提是:建立在触摸和抓取之上,需要控制器事件和动作的支持。
在与可交互对象产生交互时,对象上往往需要一个脚本组件,该组件既可以使VRTK_Interacable Onject,也可以是继承于该类的子类。Openable_Door就是VRTK_Interacable Onject的子类。
也可以开窗户,开柜子,开闸等,只需要调整详细的角度即可。
007-CameraRig_HeightAdjustTeleport
展示了适应高度的传送机制,再有高低梯度的场景中,玩家应该拥有攀爬的能力,和现实中一样。同时,当脚下踏空的时候,也应该会掉落到低处,知道触地在实体上为止。
核心脚本:VRTK_Height Adjust Teleport
继承自VRTK_Basic Teleport,允许基于传送点事都在其他对象上来变更[CameraRig]的Y位置,和VRTK_Basic Teleport一样,脚本组件必须挂载在[CameraRig]上,且必须要World Pointer(世界指针)即可。
- VRTK案例001~010
- 【HTCVR】VRTK插件案例分析之001~010
- VRTK案例011~020
- VRTK案例021~030
- VRTK案例讲解
- VRTK新增案例038~044
- Unity Steam_VR开发工具插件---VRTK 自带案例分析
- Unity Steam_VR开发工具插件---VRTK 自带案例分析
- 【HTCVR】VRTK插件案例分析之0011~020
- 【HTCVR】VRTK插件案例分析之0021~030
- 【HTCVR】VRTK插件案例分析之0031~037
- 【HTCVR】VRTK插件案例分析之0038~044
- Unity Steam_VR开发工具插件---VRTK 自带案例分析
- Unity Steam_VR VRTK开发插件自带案例详解(一)
- VRTK攻略
- VRTK 瞬移
- <VRTK学习二>vrtk ControllerEvent
- htc 抓取(VRTK)
- CyclicBarrier 应用讲解 及与CountDownLantch的区别
- 基于Spring + Spring MVC + Mybatis 高性能web构建
- 将图片归一化以及翻转的c++小程序
- DNS(域名系统)
- discuz论坛和PHP7.0有兼容问题安装不了
- VRTK案例001~010
- OkHTTP3齐全的初级使用
- 华为在线编程系列-质数因子
- Zend Studio 12.5.1安装
- Android学习路线整理
- 端口被占用的解决办法
- bzoj1041[HAOI2008]圆上的整点
- C语言中#define的用法(转)
- php学习