Steam VR Unity VRTK Examples 1 简单指针与传送

VRTK是个很好用的使用Unity开发Steam VR的工具集,感谢开发者团队在其中做了很多非常棒的工作。其官方文档对插件中的Scripts、Prefabs都做了很详细的介绍。对于插件中的所有例子,官方还做了视频放在了Youtube上。美中不足的是,对每个示例场景的分析不是很详细,这里对每个示例场景做一个比较详细的剖析,一遍掌握其中的用法。先做一下搬运工,以官方文档的内容开头:

欢迎来到VRTK

这个工具包提供了很多在Unity3d做VR开发中通用的VR功能,主要包括:

具有别名的控制器按钮事件

控制世界指针(激光指针)

玩家瞬间转移

使用控制器抓起/握住物体

使用控制器与物体交互

把游戏物体变成交互式的UI元素

这里有什么

这个工具集主要分成三个部分:

Prefabs - VRTK/Prefabs/

Scripts - VRTK/Scripts/

Examples - VRTK/Examples/

所有相关的文件都存放在VRTK这个文件夹里面,这个文件夹可以拷贝到现有工程中。Examples文件夹包含了该工具集中的示例场景。

从这里开始

克隆这个代码库 git clonehttps://github.com/thestonefox/SteamVR_Unity_Toolkit.git

使用Unity3d打开SteamVR_Unity_Toolkit

从Unity Asset Store下载并导入SteamVR插件

浏览Examples中的场景可以查看脚本的示例用法

示例分析

Examples文件夹包含了所有的示例场景,用来说明脚本和prefab的用法。该文件夹中还有一个/Resources/Scripts文件夹,其中包含了示例场景中实现特定功能使用的帮助脚本,例如事件监听器。这些脚本在实际项目中没必要用。

下面开始进入主题:

001_CameraRig_VR_PlayArea 相机配件与VR游戏区域

这个简单的场景说明了[CameraRig]Prefab的用法。(官方解释到此为止)

这个Prefab是SteamVR自带的,位于SteamVR文件夹下面的Prefabs中。建好场景之后,直接加到场景中,无需其他操作。运行程序之后,从头盔中就可以看到两个控制器手柄。无须赘述。

[CameraRig]Prefab的结构如下图,很好理解,一个头盔,两个手柄,可以分出左右手。

CameraRig

002_Controller_Events 控制器事件

这个简单的场景展示了在控制台中输出控制器的事件。(官方解释到此为止)

这个场景给控制手柄添加了VRTK_ControllerEvents脚本,如下图所示。

ControllerEvents

下面详细的来看一下VRTK_ControllerEvents这个类的介绍。

VRTK_ControllerEvents这个脚本处理了游戏控制器发出的事件。该脚本应该添加到[CameraRig]预制体下面的控制器对象上,并且对外提供了事件处理监听器。因为系统菜单按钮的行为是由Steam平台使用的,它不能被覆盖,所以不提供这个按钮的事件监听。

当按下一个控制器上的按钮,这个脚本发出一个指示该按钮被按下的事件,允许其他脚本进行事件监听该事件,不用实现任何控制器逻辑。同样的,当释放一个按钮的时候,该脚本也会发出一个按钮被释放的事件。

该脚本还为按钮定义了一个公共布尔型按钮按下状态,允许其他脚本来查询一个按钮是否被按住了。

关于变量、事件的详细介绍,看这里

VRTK_ControllerEvents_ListenerExample这个类示范了如何绑定事件输出事件参数等内容。

003_Controller_SimplePointer 控制器简单指针

该场景展示了,按下控制器上的触摸板(Touchpad),发射一道光束指向场景中的物体。控制台中显示了指针(pointer)事件。(官方解释到此为止)

简单指针(SimplePointer)从控制器的顶端发出一道有颜色的光束,以此来模拟激光束。在场景中指向物体的时候非常有用,同时它也能确定它正指向的物体,以及物体和控制器之间的距离。

按下控制器上的触摸板可以激活激光束。该脚本监听的事件是AliasPointer事件,可以改变VRTK_ControllerEvents脚本上的Pointer Toggle button参数来设置指针开关按钮。

SimplePointer

该脚本能够添加到[CameraRig]Prefab下面的控制器对象上面,并且要求控制器对象同时具有VRTK_ControllerEvents脚本,因为它使用这个脚本监听控制器按钮事件,通过事件来开关激光束。该脚本也可以添加到其他对象上,比如[CameraRig]/Camera (head),从而允许其他物体投射光线。这种情况下,控制器这个参数赋值,它用于开关光束。

具体的事件绑定和事件参数等用法,请参考VRTK_ControllerPointerEvents_ListenerExample这个脚本。其中事件参数DestinationMarkerEventArgs类中包含了丰富的内容。

DestinationMarkerEventArgs

004_CameraRig_BasicTeleport 基本的传送功能

该场景中有一些基本的几何体,用户可以按下控制器上触摸板,发出一条光束指向游戏世界中的一个物体。当用户松开触摸板的时候,用户就被传送(teleport)到了光束终点位置。(官方解释到此为止)

该场景中在[CameraRig]预制体上添加了VRTK_BasicTeleport脚本。VRTK_BasicTeleport脚本实现了基本的传送功能,该脚本把[CameraRig]Prefab在游戏世界的x/z位置更新到了世界指针指向的位置,是在WorldPointerDestinationSet这个事件中设置。因为VRTK_BasicTeleport不会改变y方向的位置,所以它不能用于上下移动物体,只允许在一个平面上传送。

VRTK_BasicTeleport脚本添加到[CameraRig]Prefab上,并且还要把WorldPointer脚本的一个具体实现添加到其他的物体上。比如,把VRTK_SimplePointer添加到控制器对象上。(之所以这样说,是因为WorldPointer是个抽象类,VRTK_SimplePointer和VRTK_BezierPointer是它的具体实现。)VRTK_BasicTeleport脚本还定义传送中和传送结束两个事件。除此之外,还有场景闪烁的速度等变量。

具体的VRTK_BasicTeleport类的信息可以参考这里https://vrtoolkit.readme.io/docs/vrtk_basicteleport

期待下一篇!

参考:

https://vrtoolkit.readme.io/docs/examples

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容