一、瞬移功能简介##
瞬移可以分为直线瞬移(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轴的改变,所以不能进行上下移动游戏对象。
脚本参数:
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:可调节高度的传送器##
概念:继承自基础传送器,允许根据传送位置是否在其他对象顶部来让[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##
左手直线,右手曲线传送+可调节高度传送阵