29VRTK插件之瞬移功能的实现

一、瞬移功能简介##

瞬移可以分为直线瞬移(SimplePointer)和曲线瞬移(BezierPointer)都是通过发射射线检测目标位置实现远距离传输的功能。

#直线瞬移的实现——SimplePointer

1.发射激光脚本的实现,旧版本发射激光的脚本。

参照场景3发射激光##

激光脚本

2.新版本发射激光脚本实现。

新版本激光脚本事件系统的监听
发射激光的脚本

3参数详解.

Enable Teleport(启用传送):如果勾选了,在目标设置事件中的teleport标志位就设为true,
所以传送脚本就知道是否要行动到新的目标。如果这个选项没有勾选的话,控制器光束启动但是不会触发位移。

Point Hit Color(指针碰撞颜色):当光束和一个有效目标碰撞的颜色。每个控制器可以有不同的颜色设置。

Pointer Miss Color(指针无碰撞颜色):当光束没有命中有效目标时的颜色。每个控制器可以有不同的颜色设置。

Show Play Area Cursor(显示游玩区光标):如果这个启动,游玩区界限就会在光束指针的顶端显示出来,
颜色和当前指针颜色相同。

Play Area Cursor Dimensions(游玩去光标尺寸):决定游玩区光标和碰撞的尺寸。如果值为零,
Play Area Cursor 的尺寸将根据Play Area空间进行校正。

Handle Play Area Cursor Collisions(处理游玩区光标碰撞):如果勾选,当游玩区光标和其他物体发生碰撞时,
指针颜色就会变成Pointer Miss Color的颜色且WorldPointerDestinationSet 事件将不会被触发,
这将防止传送到游玩区会发生碰撞的区域。

Beam Always On(光束总是开启):如果这个勾选,光束指针总是可见,但是设置目标点事件仍然只会在所
指定按钮松开时发出。

Pointer Thickness(指针光束厚度):光束长宽也可以在脚本里设置以及能够开关显示在光柱最后的球形光柱
顶端(表示光标)。

Pointer Length(指针光束长度):在停止前光束投射的距离。

Show Pointer Tip(显示指针顶端):切换是否光标显示在光束指针的尾部

直线瞬移功能的实现场景004_CameraRig_BasicTeleport##

1.VRTK_BasicTeleport:基础传送器##

概念:基础传送器更新[CameraRig]在游戏世界中的x和z位置到由WorldPointerDestinationSet事件设置定位的世界指针顶端的位置。由于支持X,Z轴的改变,所以不能进行上下移动游戏对象。


VRTK_BasicTeleport:基础传送器
脚本参数:
Blink Transition Speed(眨眼淡入淡出速度):可以在基础传送脚本中改变眨眼渐变速度来提供
一个自定义的传送体验。速度设置为0意味着没有渐变眨眼特效呈现。渐变通过 SteamVR Unity
 插件脚本里的SteamVR_Fade.cs脚本实现。

Distance Blink Delay(距离眨眼延时): 范围从0到32,这个值决定了基于被传送距离的眨眼过渡保持黑屏
的时长。值为0时,任何传送距离都不会延长传送的眨眼过渡,值为32时,就算距离初始点很 近的被传送距离
都会延长传送的眨眼过渡。这可以被用来模拟用户传送更远的距离花费更长时间。值为16对用户来说就刚好。

Headset Position Compensation(头盔位置补偿): 如果勾选,传送坐标将会式游玩区内头盔的位置。如果
没有勾选,传送坐标将总是游玩区中间的位置,就算头盔位置不在游玩区中间也式如此。

Ignore Target With Tag Or Class(忽略带有标签或脚本的目标): 一个指定对象标签或者对象上
添加的脚本名字的字符串,通知传送器这种目标点应该被忽略,所以用户就不能传送到这些位置上。
同时也确保指针颜色被设为丢失目标点颜色。
#VRTK_BezierPointer:贝塞尔曲线激光指针

009_Controller_BezierPointer贝塞尔曲线激光指针—— 实现曲线传送(瞬移)##

曲线发射脚本
Enable Teleport(启用传送):如果勾选了,在目标设置事件中的teleport标志位就设为true,所以传送
脚本就知道是否要行动到新的目标。如果这个选项没有勾选的话,控制器光束启动但是不会触发位移。
Point Hit Color(指针碰撞颜色):当光束和一个有效目标碰撞的颜色。每个控制器可以有不同的颜色设置。
Pointer Miss Color(指针无碰撞颜色):当光束没有命中有效目标时的颜色。每个控制器
可以有不同的颜色设置。
Show Play Area Cursor(显示游玩区光标):如果这个启动,游玩区界限就会在光束指针的顶端显示出来,
颜色和当前指针颜色相同。
Play Area Cursor Dimensions(游玩去光标尺寸):决定游玩区光标和碰撞的尺寸。如果值为零,
Play Area Cursor 的尺寸将根据Play Area空间进行校正。
Handle Play Area Cursor Collisions(处理游玩区光标碰撞):如果勾选,当游玩区光标和其他物体
发生碰撞时,指针颜色就会变成Pointer Miss Color的颜色且WorldPointerDestinationSet 
事件将不会被触发,这将防止传送到游玩区会发生碰撞的区域。
Beam Always On(光束总是开启):如果这个勾选,光束指针总是可见,但是设置目标点事件仍然
只会在所指定按钮松开时发出。
Activate Delay(激活间隔):能够再次激活指针光束的延迟时间秒数。用来防止持续传送。
Pointer Length(指针光束长度):在停止前光束投射的距离。
Pointer Density(指针密度):贝塞尔曲线光束渲染的物体个数。这里数值太高将很可能会因为大量渲染
对象来对游戏性能有负面影响。
Show Pointer Cursor**(显示指针光标)**:在光束终点位置的地面显示光标。用来看光束终点位置的
高度很有用,它可以通过切换这个来关闭。

Pointer Cursor Radius(指针光标半径):地面指针光标的尺寸,这个值也会影响贝塞尔曲线光束里的
对象的尺寸。半径越大,对象尺寸越大。

Beam Curve Offset(光束曲线偏移):投射光束时应用的高度偏移量,就算在光束径直指向时也能
产生一个光滑的曲线。

Custom Pointer Tracer**(自定义指针轨迹)**: 可以在这里设置一个自定义的游戏对象用来代替
光束轨迹的默认球体。自定义游戏对象将和控制器的旋转想匹配。

Custom Pointer Cursor(自定义指针光标):可以在这里设置一个自定义的游戏对象用来代替
指针光标的默认平柱体。

2、VRTK_HeightAdjustTeleport:可调节高度的传送器##

VRTK_HeightAdjustTeleport

概念:继承自基础传送器,允许根据传送位置是否在其他对象顶部来让[CameraRig]改变y位置。高度调整传送器被添加到[CameraRig]预制并需要一个可用的世界指针。

Blink Transition Speed :眨眼淡入淡出的速度:可以在基础传送脚本中改变眨眼渐变速度来提供一个自定义
的传送体验。速度设置为0意味着没有渐变眨眼特效呈现。渐变通过
 SteamVR Unity 插件脚本里的SteamVR_Fade.cs脚本实现。

Distance Blink Delay:距离眨眼延时: 范围从0到32,这个值决定了基于被传送距离的眨眼过渡保持黑屏
的时长。值为0时,任何传送距离都不会延长传送的眨眼过渡,值为32时,就算距离初始点很 近的被传送距离
都会延长传送的眨眼过渡。这可以被用来模拟用户传送更远的距离花费更长时间。值为16对用户来说就刚好。

Headset Position Compensation:头盔位置补偿: 如果勾选,传送坐标将会式游玩区内头盔的位置。如果
没有勾选,传送坐标将总是游玩区中间的位置,就算头盔位置不在游玩区中间也式如此。

Ignore Target With Tag Or Class:忽略带有标签或脚本的目标: 一个指定对象标签或者对象上添加的脚本
名字的字符串,通知传送器这种目标点应该被忽略,所以用户就不能传送到这些位置上。同时也确保指针颜色被
设为丢失目标点颜色。
Play Space Falling:游玩区坠落:检查是否玩家是否走出对象,即所在游玩区的位置不在对象上,然后
就会自动传送到最近的地面上。

反过来说Play Space Falling 选项是在玩家头盔在一个对象上方时会自动传送到一个对象的顶部,这一点
在模拟爬梯子时很有用,不需要使用指针光束定位。如果这个选项关闭,玩家就能在他们 所站在的对象的同样y
高度的空中行走(也就是有一部分游玩区在对象外部)。

二、相识场景简介##

007_CameraRig_HeightAdjustTeleport##

左右手柄直线传送+可调节高度传送阵.

010_CameraRig_TerrainTeleporting##

左手直线,右手曲线传送+可调节高度传送阵

020_CameraRig_MeshTeleporting##

左手直线,右手曲线传送+可调节高度传送阵

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

推荐阅读更多精彩内容