《SteamVR2.2.0官方教程》
##《SteamVR2.2.0官方教程》发布说明:
++++“SteamVR2.2.0官方教程”:是对“SteamVR2.2.0”的官方教程(Tutorials)梳理总结;(度的重点技术突破点确立为:“SteamVR”)(前面已经有了一个“V2.0”和“V2.2.0”开发指南了:/VRunSoftYanlz/article/details/86618187,/VRunSoftYanlz/article/details/88784527;快速入门:/VRunSoftYanlz/article/details/88833579;交互系统:/VRunSoftYanlz/article/details/89199778;这个“官方教程”是基于前面几篇操作指南和快速入门的一个拓展,所以可以先粗略查阅一下这几篇博文;这里重点说明一下:实战是关键,所以官方教程是重中之重,后期还会基于熟悉官方示例的基础上拓展应用到现实应用中,敬请期待!
++++“SteamVR2.2.0官方教程”:定位在熟悉SteamVR框架;
++++SteamVR2.2.0教程(一):/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):/VRunSoftYanlz/article/details/89894097
#第一篇:v2.2.0快速入门
#第一篇:v2.2.0快速入门
++++立钻哥哥:在“Valve”发布了“The Lab”之后,SteamVR也采用了该项目的经验,创建了一个“交互系统(Interaction System)”,该系统提供了一些常用的交互应用,包括:“与Unity UI元素的交互(Interaction with Unity UI elements)”,“拾起,放下,扔出去(Pickup, Drop, and Throw)”,“投掷速度的多种变化(Multiple variations on throwing velocites)”,“弓箭(Bow and Arrow)”,“轮交互(Wheel interactions)”,“邻近按钮(Proximity button)”,“各种骨骼输入示例(Variety of Skeleton Input example)”,“传送(Teleporting)”,“使用抓握对象(Using held objects)”,“使用手持物体的手的骨架输入(Using Skeleton Input to from a hand around a held object)”等,这些都是非常好的应用案例,后期立钻哥哥将一一剖析拓展,敬请期待(关注“SteamVR”分类:/vrunsoftyanlz/article/category/8582642)!
++++SteamVR2.0开发指南:/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:/VRunSoftYanlz/article/details/89199778
++++A.1、快速入门(Getting started)
++++A.2、示例场景(Sample scene)
##A.1、快速入门(Getting started)
##A.1、快速入门(Getting started)
++++立钻哥哥:交互系统(Interaction System)是游戏的核心,一般是交互系统先行设计开发,基于交互系统再进行游戏交互的设计和情景设计;那我们就从“交互系统”出发,快速入门吧!
++++关于SteamVR的快速入门,可查阅这个链接:/VRunSoftYanlz/article/details/88833579
++++获取更多关于SteamVR技术知识,可查阅这个分类:/vrunsoftyanlz/article/category/8582642
++++A.1.1、交互系统(Interaction System)的认知
++++A.1.2、入门指南(Getting started)
###A.1.1、交互系统(Interaction System)的认知
++A.1.1、交互系统(Interaction System)的认知
++++立钻哥哥:在Valve发布“The Lab”之后,SteamVR也创建了一个“交互系统”,我们可以在自己的项目中使用这些例子,该系统也更新使用了“SteamVR Input”和新的“SteamVR Skeleton Input”系统;
++++[Interaction with Unity UI elements]:与Unity UI元素的交互;
++++[Pickup, Drop, and Throw]:拾起,放下,扔出去;
++++[Multiple variations on throwing velocities]:投掷速度的多种变化;
++++[Bow and Arrow]:弓箭;
++++[Wheel interactions]:轮交互;
++++[Proximity button]:邻近按钮;
++++[Variety of Skeleton Input example]:各种骨骼输入示例;
++++[Teleporting]:传送;
++++[Using held objects]:使用抓握对象;
++++[Using Skeleton Input to from a hand around a held object]:使用手持物体的手的骨骼输入;
++“The Lab”中的交互系统(Interaction System)
++++立钻哥哥:“交互系统(Interacion System)”是一系列脚本、预制体和其他资源,是“The Lab”中所有迷你游戏和其他场景的基础,这个系统最初被设计成轻量级和灵活的,这样他就可以支持我们当时正在进行的所有实验;
++++Steam平台上的“The Lab”链接:/app/450390/The_Lab/
###A.1.2、入门指南(Getting Started)
++A.1.2、入门指南(Getting Started)
++++立钻哥哥:要获取示例,可查看“Assets/SteamVR/InteractionSystem/Samples/Scenes”中的“Interactions_Example”场景;
++++Assets/SteamVR/InteractionSystem/Samples/立钻哥哥的测试场景(Interactions_Example).unity
++++1、新建场景;
++++2、删除“主摄像机”对象;
++++3、将“Player”预制体拖放到场景中;
++++4、戴上头盔观察场景;
++++5、观察“Skeleton Input”控制器;
++++6、添加“Interactable”可交互组件;
++++7、添加“Throwable”可抛出组件;
++++8、添加“Skeleton Poser”骨架姿态组件;
++++9、添加“Teleporting”传送预制体;
++++10、添加“TeleportPoint”传送点预制体;
++++11、添加“TeleportArea”传送区域预制体;
++立钻哥哥推荐的热门分类:
++++SteamVR:/vrunsoftyanlz/article/category/8582642
++++XR技术企业内训:/vrunsoftyanlz/article/category/8037810
++++5G+云计算+雾计算:/vrunsoftyanlz/article/category/8741272
++++框架编程:/vrunsoftyanlz/article/category/7570175
++++SteamVR2.0开发指南:/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):/VRunSoftYanlz/article/details/89894097
++1、新建场景
++++立钻哥哥:新建场景;当然,那需要先导入“SteamVR插件”;
++++SteamVR的Unity资源商店链接:/packages/tools/integration/steamvr-plugin-32647
++++SteamVR在Github上的Release:/ValveSoftware/steamvr_unity_plugin/releases
++++新建工程后,导入SteamVR插件,那就可以开始新建一个测试场景了:
++2、删除“主摄像机”对象
++++立钻哥哥:删除“主摄像机(Main Camera)”;
++++如果需要做一款VR游戏,需要把摄像机调成VR视角;
++++[方法1]:使用预制的VR摄像机;
++++[方法2]:将普通的摄像机修改成VR摄像机;
++++Tips:比较详细的描述可参考“SteamVR简介”:/VRunSoftYanlz/article/details/86484254
++3、将“Player”预制体拖放到场景中
++++立钻哥哥:将“Assets/SteamVR/InteractionSystem/Core/Prefabs/”下的“Player.prefab”预制体拖到场景中;这个预制体设置了主要的玩家和手,它还挂钩到所有相关的“SteamVR Input”需要的动作;
++4、戴上头盔观察场景
++++立钻哥哥:现在我们就可以戴上头盔观察一下场景吧,里面有什么呢?估计是一个空白的场景,很可能有控制器呀!
++5、观察“Skeleton Input”控制器
++++立钻哥哥:如果我们的控制器是支持“Skeleton Input”的,操作时会看到双手触摸并按下控制器上的按钮;
++6、添加“Interactable”可交互组件
++++立钻哥哥:将“Interactable”组件添加到场景中的任何对象中,该对象上的所有其他组件将开始从玩家手中接收相关信息了;
++++可参考:Assets/SteamVR/InteractionSystem/Samples/Scripts/InteractableExample.cs
++++立钻哥哥:这里必须指出一点的是,SteamVR在这里没有采用delegate-event形式,而是采用了SendMessage(),这个是有争议的,但是不伤大雅!
++++立钻哥哥:其实上面的那些都是了解,没有真正实战,实战才是关键,那我们就开始操练起来:
++++立钻哥哥:好吧,拓展了这么多,貌似啥啥啥??!! =>好吧,那就看一下利用“Interactable”组件实现的效果吧:
++7、添加“Throwable”可抛出组件
++++立钻哥哥:“将Throwable组件添加到对象中,将允许玩家拾取并抛出该物体”,“Throwable”是最基本的交互对象之一;当一只手悬停在这个物体上并按下其中一个抓取按钮(通常是扳机或手柄)时,玩家可以拿起这个物体;当按下按钮时,该对象被附在手上并保持在那里;当按钮被释放时,手中的任何速度都被赋予抛出的物体;这让我们可以创建可以拾取和抛出的基本对象;
++++立钻哥哥:只要把“Throwable”组件加到物体上,这个物体就可以被抛出了!那我们来看一下效果吧:
++++立钻哥哥:现在我们来剖析一下这个神奇的脚本“Throwable.cs”:
++++float catchingThreshold = catchingSpeedThreshold * SteamVR_Utils.GetLossyScale(Player.instance.trackingOriginTransform);
++知识点06:hand.GetBestGrabbingType
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++GrabTypes bestGrabType = hand.GetBestGrabbingType();
++知识点07:GrabTypes
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\GrabTypes.cs
++++GrabTypesbestGrabType = hand.GetBestGrabbingType();
++++if(bestGrabType !=GrabType.None){}
++++GrabTypesstartingGrabType = hand.GetGrabStarting();
++++if(startingGrabType !=GrabType.None){}
++知识点08:hand.AttachObject
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.AttachObject(gameObject, bestGrabType, attachmentFlags);
++++hand.AttachObject(gameObject, startingGrabType, attachmentFlags, attachmentOffset);
++知识点09:hand.ShowGrabHint
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.ShowGrabHint();
++知识点10:hand.HideGrabHint
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.HideGrabHint();
++知识点11:hand.HoverLock
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.HoverLock(null);
++知识点12:velocityEstimator.BeginEstimatingVelocity
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\VelocityEstimator.cs
++++velocityEstimator.BeginEstimatingVelocity();
++知识点13:hand.HoverUnlock
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.HoverUnlock(null);
++知识点14:velocityEstimator.FinishEstimatingVelocity
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\VelocityEstimator.cs
++++velocityEstimator.FinishEstimatingVelocity();
++知识点15:velocityEstimator.GetVelocityEstimate
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\VelocityEstimator.cs
++++velocity = velocityEstimator.GetVelocityEstimate();
++知识点16:velocityEstimator.GetAngularVelocityEstimate
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\VelocityEstimator.cs
++++angularVelocity = velocityEstimator.GetAngularVelocityEstimate();
++知识点17:hand.GetEstimatedPeakVelocites
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.GetEstimatedPeakVelocities(outvelocity,outangularVelocity);
++知识点18:hand.GetTrackedObjectVelocity
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\VelocityEstimator.cs
++++velocity = hand.GetTrackedObjectVelocity(releaseVelocityTimeOffset);
++知识点19:hand.GetTrackedObjectAngularVelocity
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++angularVelocity = hand.GetTrackedObjectAngularVelocity(releaseVelocityTimeOffset);
++知识点20:hand.IsGrabEnding
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++if(hand.IsGrabEnding(this.gameObject)){}
++知识点21:hand.DetachObject
++++立钻哥哥:\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++hand.DetachObject(gameObject, restoreOriginalParent);
++8、添加“Skeleton Poser”骨架姿态组件
++++立钻哥哥:将“SteamVR_Skeleton_Poser”组件添加到带有“Interactable”的GameObject(游戏物体)中,并在与之交互时摆出我们想要的手的样子;
++++[Skeleton Poser(骨骼姿态)]:“SteamVR_Skeleton_Poser”组件脚本被设计成独立于“SteamVR交互系统”运行,并且可以添加到我们自己的系统中;这个组件将在后面补充比较详细的描述,请继续往下查阅吧!(官方Demo链接:https://valvesoftware.github.io/steamvr_unity_plugin/tutorials/Skeleton-Poser.html)
++++\Assets\SteamVR\Input\SteamVR_Skeleton_Poser.cs
++++\Assets\SteamVR\InteractionSystem\Core\Scripts\Interactable.cs
++++-\Assets\SteamVR\Input\SteamVR_Behaviour_Skeleton.cs
++++\Assets\SteamVR\Input\Editor\SteamVR_Skeleton_PoserEditor.cs
++++public classSteamVR_Skeleton_Poser:MonoBehaviour{}
++知识点02:SKeletonBlendablePose
++++立钻哥哥:ASkeletonBlendablePoseholds a reference to aSkeleton_PosescriptableObject, and also contains some helper functions. Also handles pose-specific animation like additive finger motion.(SkeletonBlendablePose持有对Skeleton_Pose脚本对象的引用,并且还包含一些帮助函数。还处理特定位置的动画,如添加手指运动)
++++\Assets\SteamVR\Input\SteamVR_Skeleton_Poser.cs
++++public classSkeletonBlendablePose{}
++知识点03:PoseBlendingBehaviour
++++立钻哥哥:A filter applied to the base pose. Blends to a secondary pose by a certain weight. Can be masked per-finger.(用于基本位姿的滤波器。通过一定的重量调整到第二个姿势。每个手指都可以蒙面。)
++++\Assets\SteamVR\Input\SteamVR_Skeleton_Poser.cs
++++\Assets\SteamVR\Input\Editor\SteamVR_Skeleton_PoserEditor.cs
++++public classPoseBlendingBehaviour{}
++知识点04:SteamVR_Skeleton_PoseSnapshot
++++立钻哥哥:PoseSnapshots hold a skeleton pose for one hand, as well as storing which hand they contain. They have several functions for combining BlendablePoses.(PoseSnapshots为一只手保留一个骨架的姿势,同时也保存了它们包含的那只手。他们有几个功能,以结合可调和的姿势)
++++\Assets\SteamVR\Input\SteamVR_Behaviour_Skeleton.cs
++++\Assets\SteamVR\Input\SteamVR_Skeleton_Poser.cs
++++\Assets\SteamVR\InteractionSystem\Core\Scripts\Hand.cs
++++public classSteamVR_Skeleton_PoseSnapshot{}
++知识点05:SteamVR_Skeleton_HandMask
++++立钻哥哥:Simple mask for fingers.(简单的手指遮罩)
++++\Assets\SteamVR\Input\SteamVR_Skeleton_Poser.cs
++++public classSteamVR_Skeleton_HandMask{}
++++立钻哥哥:经过上面对“SteamVR_Skeleton_Poser”组件的学习,现在我们来实践一下吧!
----尝试1:直接在一个Cube上挂载“SteamVR_Skeleton_Poser”组件,没有能拿起来!
----尝试2:那我们就添加一个“Throwable”组件吧,因为这个组件会自动加载“Interactable”组件;其实我们需要的是验证“SkeletonPoser和Interactable”之间的配合关系呢!(立钻哥哥:还是没有手势呢!!)
----尝试3:参考官方Demo示例,挂载缺失的脚本,看看能不能有奇迹出现呢?(比对后缺少脚本:“InteractableHoverEvents.cs”、“TargetHitEffect.cs”):挂载了这两个脚本,运行后还是没有出现手呢!?运行前倒是有一只手了?仅在运行前能显示出来,运行后就没有了!
++++立钻哥哥:经过第一轮的各种尝试,还没有成功,暂且跳过这个环节,后期会推出对于“SteamVR_Skeleton_Poser”组件的专题,请在“SteamVR”分类中查阅:
/vrunsoftyanlz/article/category/8582642
+++++立钻哥哥:官网也有关于“Skeleton Poser”的教程,后期会根据这个教程整理一个专题:
https://valvesoftware.github.io/steamvr_unity_plugin/tutorials/Skeleton-Poser.html
++++SteamVR_Skeleton_Poser:/VRunSoftYanlz/article/details/89931725
++9、添加“Teleporting”传送预制体
++++立钻哥哥:To addteleportingto your scene drag in the“Teleporting”prefab from“Teleport/Prefabs”into your scene. This will set up all theteleportlogic.(要在场景中添加“远程传送”功能,请将“远程传送”预制件从“Teleport/Prefabs”拖动到场景中,这将设置所有的传送逻辑。)
++++关于“传送机制”有一篇专门的博客:/VRunSoftYanlz/article/details/89390866
++++“The Lab(Valve的实验室)”的传送系统支持传送到特定的传送点或更通用的传送区;重要的类是“Teleport”、“TeleportPoint”、“TeleportArea”;
++++“Teleport/Prefabs”下的预制体“Teleporting”包括了传送系统运作的所有逻辑;向场景中添加“TeleportPoints”或“TeleportAreas”,可以添加玩家可以传送到的点;
++++“Teleport.cs”这个类处理“Teleporting传送”的大部分逻辑;当触摸板被按下时,传送指针就会出现,当指针指向一个有效的点,松开即可传送玩家;(我们也可以按下键盘上的“T”,在2D备份模式下,可以打开传送指针),“Teleport.cs”该类跟踪场景中的所有传送端口标记,并根据传送端口指针的状态通知它们淡入/淡出;
++++在某些情况下,在地板上使用不同于传送网格的网格是很有用的,在这种情况下,传送系统将追踪它击中传送网的位置,并试图将其放置在地板网孔上,这样做的目的是尝试将场景中的视觉地板与玩家游戏区域中的物理地板匹配起来;
++++“Teleport.cs”中有一些属性可能需要调整:“tracerLayerMask”、“floorFixupMask”、“floorFixupMaximumTraceDistance”、“ShowPlayAreaMarker”、“arcDistance”等;
----[tracerLayerMask]:这是传送指针将尝试命中的所有层;
----[floorFixupMask]:地板所在的层;
----[floorFixupMaximumTraceDistance]:查找地板的最大跟踪距离;
----[ShowPlayAreaMarker]:这将切换是否显示传送时玩家游戏区域的矩形,这可以帮助玩家在他们的物理空间中找到方向;
----[arcDistance]:传送弧应该走多远,增加这个数字将允许玩家在场景中传送得更远,这个值可能需要为每个场景进行调整;
++++TeleportMarkerBase(传送标记基类):这是所有传送标记的基类;它包含“Teleport”类期望出现在所有Teleport标记中的方法;我们可以用这个作为基类来创建一个新的传送标记;传送标记可以锁定或解锁,玩家不能传送到锁定的标记;
++++TeleportArea(传送区域):这是一个由网格组成的传送区;当传送到这些东西上时,玩家将会准确地传送到他们所指向的地方(加上地板固定);将“TeleportArea”组件添加到任何带有碰撞体和网格渲染器的对象中,以允许玩家在其上传送;
++++[Teleporting]:传送预制体处理系统的所有传送逻辑;
++++TeleportPoint(传送点):这是玩家可以传送到的传送点;当传送到这些东西上时,玩家将会在点的原点进行传送,而不管他们所指向的点在哪里;
++++TeleportArc(传送弧):这将为传送端口指针绘制弧线,并为传送端口系统进行物理跟踪;
++++AllowTeleportWhileAttachedToHand(允许传送时附加在手):默认情况下,我们不能用一只手来传送东西,将此“AllowTeleportWhileAttachedToHand”组件添加到附加对象上可以绕过该规则;
++++IgnoreTeleportTrace(忽略传送跟踪):将其添加到带有碰撞体的对象将允许传送跟踪穿透它;另一种处理方法是将该对象放在TeleportArc不检查的另一个层上;
++++Teleporting(Prefab)(传送预制体):这个预制体设置了整个传送系统;拖拽这个预制体到场景中会在游戏中打开传送指针;所有的传送系统的视觉和声音可以通过这个预制的属性来改变;
++++TeleportPoint(Prefab)(传送点预制体):将这些添加到场景中,以添加玩家可以传送到的位置;
++++立钻哥哥:经过大量的相关知识拓展,貌似没有什么用!毕竟,我们需要的是实战!实战!实战!!!那我们接下来操练起来吧!
----首先,我们直接拖一个预制体(\Assets\SteamVR\InteractionSystem\Teleport\Prefabs\Teleporting.prefab)到场景中,运行一下看看效果吧;
----运行很顺利,而且效果也还不错,没有什么明显的bug,可以直接拿来用的,如果想实现传送功能,还需要继续往下操作“10、添加TeleportPoint传送点预制体”和“11、添加TeleportArea传送区域预制体”;
++++立钻哥哥:经过上面的操练,这个“Teleporting”预制体还是比较顺利的运行了,那我们就来看看这个预制体中的核心代码吧!(核心代码就两个:“Teleport.cs”和“TeleportArc.cs”)
++++[Teleport.cs]:处理所有的传送逻辑!这个解释已经非常明确了,这个脚本非常非常重要呀!
++++\Assets\SteamVR\InteractionSystem\Teleport\Scripts\TeleportArc.cs
++++立钻哥哥:这个“Teleporting”预制体,我们就先了解到这里,接下来看看“TeleportPoint”和“TeleportArea”预制体吧;
++10、添加“TeleportPoint”传送点预制体
++++立钻哥哥:在前面我们剖析了“Teleporting”这个预制体,这个预制体处理系统的所有传送逻辑,是一个非常重要的预制体哟;那这个“TeleportPoint(传送点)”也非常关键,这里提供了传送点功能逻辑;
++++从“\Assets\SteamVR\InteractionSystem\Teleport\Prefabs\”下拖入这个预制体“TeleportPoint.prefab”到场景中,就可以生成一个传送点;
++++立钻哥哥:上面展示了“TeleportPoint(传送点)”的效果,还不错,没有什么大的问题,那我们就可以根据这个初步Demo,来展开我们的想象了,替换成我们想要的功能和UI!
++++\Assets\SteamVR\InteractionSystem\Teleport\Scripts\TeleportPoint.cs
++++TeleportMarkerBase(传送标记基类):这是所有传送标记的基类;它包含“Teleport”类期望出现的所有Teleport标记中的方法;我们可以用这个作为基类来创建一个新的传送标记;传送标记可以锁定或解锁,玩家不能传送到锁定的标记;
++++[TeleportPoint(传送点)]:这是玩家可以传送到的传送点;当传送到这些东西上时,玩家将会在点的原点进行传送,而不管他们所指向的点在哪里;
++++[TeleportPoint(Prefab)(传送点预制体)]:将预制体添加到场景中,以添加玩家可以传送到的位置;
++++\Assets\SteamVR\InteractionSystem\Teleport\Scripts\TeleportPoint.cs
++++立钻哥哥:好吧,这个“TeleportPoint”预制体就分析到这里,基本可以实现传送了,点到点的(Point to Point);那我们接下来看看“TeleportArea(传送区域)”,这个就是点到面了(Point to Area);
++11、添加“TeleportArea”传送区域预制体
++++立钻哥哥:“TeleportArea(传送区域)”这是一个由网格组成的传送区;当传送到这些东西上时,玩家将会准确地传送到他们所指向的地方(加上地板固定);将此组件(TeleportArea)添加到任何带有碰撞体和网格渲染器的对象中,以允许玩家在其上传送;
++++立钻哥哥:这里“TeleportArea”并没有被拖拽为预制体,那我们从示例“Interactions_Example”中先拖拽成预制体,再在我们自己的场景中察看一下效果,最后我们仿造自己创建一个区域;
++++\Assets\SteamVR\InteractionSystem\Teleport\Scripts\TeleportArea.cs
++++\Assets\SteamVR\InteractionSystem\Teleport\Scripts\TeleportMarkerBase.cs
++++立钻哥哥:那我们尝试自定义设计一个传送区域吧!(思路:生成一个Plane,再把“TeleportArea”组件添加到Plane上,看看效果怎样!?)==>初步试了一下,还是比较成功的;
++++立钻哥哥:终于把这个“官方教程”给弄完了,其实还离目标非常远,这个在原规划中仅仅是一个开头,但随着不断拓展都已经分成两篇了(说明:是系统不让篇幅太长,才无奈分开的);经过一系列杂乱无章的拓展和实践,终于把一些基本问题串了一下,这为后边的示例、案例、实战等专题提供了探索经验。
++++1、新建场景;
++++2、删除“主摄像机”对象;
++++3、将“Player”预制体拖放到场景中;
++++4、戴上头盔观察场景;
++++5、观察“Skeleton Input”控制器;
++++6、添加“Interactable”可交互组件;
++++7、添加“Throwable”可抛出组件;
++++8、添加“Skeleton Poser”骨架姿态组件;
++++9、添加“Teleporting”传送预制体;
++++10、添加“TeleportPoint”传送点预制体;
++++11、添加“TeleportArea”传送区域预制体;
++立钻哥哥推荐的热门分类:
++++SteamVR:/vrunsoftyanlz/article/category/8582642
++++XR技术企业内训:/vrunsoftyanlz/article/category/8037810
++++5G+云计算+雾计算:/vrunsoftyanlz/article/category/8741272
++++框架编程:/vrunsoftyanlz/article/category/7570175
++++SteamVR2.0开发指南:/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):/VRunSoftYanlz/article/details/89894097
++++SteamVR实战之PMCore:/VRunSoftYanlz/article/details/89463658
【XR游戏开发QQ群:784477094】
++立钻哥哥推荐的拓展学习链接(Link_Url):
++++立钻哥哥Unity学习空间:/VRunSoftYanlz/
++++虚拟现实VR资讯:/VRunSoftYanlz/article/details/89165846
++++HTC_VIVE开发基础:/VRunSoftYanlz/article/details/81989970
++++Oculus杂谈:/VRunSoftYanlz/article/details/82469850
++++Oculus安装使用:/VRunSoftYanlz/article/details/82718982
++++Unity+SteamVR=>VR:/VRunSoftYanlz/article/details/88809370
++++Unity减少VR晕眩症:/VRunSoftYanlz/article/details/89115518
++++SteamVR简介:/VRunSoftYanlz/article/details/86484254
++++SteamVR脚本功能分析:/VRunSoftYanlz/article/details/86531480
++++SteamVR2.0开发指南:/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):/VRunSoftYanlz/article/details/89894097
++++SteamVR实战之PMCore:/VRunSoftYanlz/article/details/89463658
++++SteamVR/Extras:/VRunSoftYanlz/article/details/86584108
++++SteamVR/Input:/VRunSoftYanlz/article/details/86601950
++++OpenXR简介:/VRunSoftYanlz/article/details/85726365
++++VRTK杂谈:/VRunSoftYanlz/article/details/82562993
++++VRTK快速入门(杂谈):/VRunSoftYanlz/article/details/82955267
++++VRTK官方示例(目录):/VRunSoftYanlz/article/details/82955410
++++VRTK代码结构(目录):/VRunSoftYanlz/article/details/82780085
++++VRTK(SceneResources):/VRunSoftYanlz/article/details/82795400
++++VRTK_ControllerEvents:/VRunSoftYanlz/article/details/83099512
++++VRTK_InteractTouch:/VRunSoftYanlz/article/details/8310
++++虚拟现实行业应用:/VRunSoftYanlz/article/details/88360157
++++Steam平台上的VR:/VRunSoftYanlz/article/details/88960085
++++Steam平台热销VR:/VRunSoftYanlz/article/details/89007741
++++VR实验:以太网帧的构成:/VRunSoftYanlz/article/details/82598140
++++实验四:存储器扩展实验:/VRunSoftYanlz/article/details/87834434
++++FrameVR示例V0913:/VRunSoftYanlz/article/details/82808498
++++FrameVR示例V1003:/VRunSoftYanlz/article/details/83066516
++++SwitchMachineV1022:/VRunSoftYanlz/article/details/83280886
++++PlaySceneManagerV1022:/VRunSoftYanlz/article/details/83280886
++++Unity5.x用户手册:/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:/VRunSoftYanlz/article/details/78630945
++++Cocos2dx面试题:/VRunSoftYanlz/article/details/78630967
++++禅道[zentao]:/VRunSoftYanlz/article/details/83964057
++++Lua快速入门篇(Xlua拓展):/VRunSoftYanlz/article/details/81173818
++++Lua快速入门篇(XLua教程):/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(基础概述):/VRunSoftYanlz/article/details/81041359
++++框架知识点:/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):/VRunSoftYanlz/article/details/80630325
++++.Net框架设计:/VRunSoftYanlz/article/details/87401225
++++从零开始学架构:/VRunSoftYanlz/article/details/88095895
++++设计模式简单整理:/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:/VRunSoftYanlz/article/details/87908365
++++Unity案例(Vehicle):/VRunSoftYanlz/article/details/82355876
++++UML类图:/vrunsoftyanlz/article/details/80289461
++++PowerDesigner简介:/VRunSoftYanlz/article/details/86500084
++++Unity知识点0001:/vrunsoftyanlz/article/details/8030
++++Unity知识点0008:/VRunSoftYanlz/article/details/81153606
++++U3D_Shader编程(第一篇:快速入门篇):/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):/vrunsoftyanlz/article/details/80372628
++++Unity引擎基础:/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:/vrunsoftyanlz/article/details/78882034
++++UGUI基础:/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:/vrunsoftyanlz/article/details/78884882
++++UGUI综合:/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:/vrunsoftyanlz/article/details/79254559
++++Unity网络:/vrunsoftyanlz/article/details/79254902
++++Unity资源加密:/VRunSoftYanlz/article/details/87644514
++++PhotonServer简介:/VRunSoftYanlz/article/details/86652770
++++编写Photon游戏服务器:/VRunSoftYanlz/article/details/86682935
++++C#事件:/vrunsoftyanlz/article/details/78631267
++++C#委托:/vrunsoftyanlz/article/details/78631183
++++C#集合:/vrunsoftyanlz/article/details/78631175
++++C#泛型:/vrunsoftyanlz/article/details/78631141
++++C#接口:/vrunsoftyanlz/article/details/78631122
++++C#静态类:/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:/vrunsoftyanlz/article/details/78630945
++++C#数据类型:/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:/vrunsoftyanlz/article/details/78630687
++++UnityAPI.Rigidbody刚体:/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:/VRunSoftYanlz/article/details/81916293
++++UnityAPI.WheelCollider轮碰撞器:/VRunSoftYanlz/article/details/82356217
++++UnityAPI.Resources资源:/VRunSoftYanlz/article/details/83155518
++++JSON数据结构:/VRunSoftYanlz/article/details/82026644
++++CocosStudio快速入门:/VRunSoftYanlz/article/details/82356839
++++Unity企业内训(目录):/VRunSoftYanlz/article/details/82634668
++++Unity企业内训(第1讲):/VRunSoftYanlz/article/details/82634733
++++Unity企业内训(第2讲):/VRunSoftYanlz/article/details/82861180
++++Unity企业内训(第3讲):/VRunSoftYanlz/article/details/82927699
++++Unity企业内训(第4讲):/VRunSoftYanlz/article/details/83479776
++++Unity企业内训(第5讲):/VRunSoftYanlz/article/details/83963811
++++Unity企业内训(第6讲):/VRunSoftYanlz/article/details/84207696
++++钻哥带您了解产品原型:/VRunSoftYanlz/article/details/87303828
++++插件<Obi Rope>:/VRunSoftYanlz/article/details/83963905
++++计算机组成原理(教材篇):/VRunSoftYanlz/article/details/82719129
++++5G接入:云计算和雾计算:/VRunSoftYanlz/article/details/88372718
++++云计算通俗讲义:/VRunSoftYanlz/article/details/88652803
++++立钻哥哥Unity 学习空间:/VRunSoftYanlz/
--_--VRunSoft:lovezuanzuan--_--
《SteamVR2.2.0官方教程(二)》(Yanlz+Unity+XR+VR+AR+MR+SteamVR+Valve+Tutorials+Interaction+Oculus+立钻哥哥++ok++)