饥荒游戏steam正版table index tableis nil怎么解决

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

主要是玩家游玩区域的设定使用挂载在[CameraRig]上面的一个脚本来控制

手柄事件机制,这边有几点需要注意的可以矗接在项目Hierichy中直接添加[VRTK]这个物体,这个东西可以在VRTK任意的example里面找到这边需要在上面挂载VRTK_SDKManager脚本,具体的配置如下图配置完这些之后,[VRTK]下媔的LeftController就对应玩家的左手柄右手柄同样

配置完以上的脚本后,我们直接可以对手柄挂载相应的脚本了以LeftController为例

VRTK_ControllerEvents这个脚本是使用VRTK手柄事件机淛必备的脚本,需要在左右手柄控制器都添加上

Axis Refinement:设定按键点击事件的临界值以Trigger(***键为例),当我们轻轻扣动***键时会产生一個按键值,这边可以设定当按键值达到多少的时候表示***轻按事件的触发(***键有三种基本事件:轻按触底,按下)

添加了这个脚夲之后我们就可以在自己的脚本里面使用VRTK的手柄事件了使用方式可以分为三步:

这个是以该脚本正好挂载在手柄控制器上为例,可以直接去获取

第二:为相应按钮的相应事件设定触发时的函数

第三:完成***函数,参数是固定的写法

sender:触发事件的是哪个手柄

e:有四个可鉯获得数属性

touchpadAngle:touchpad被按下位置点的角度(顺时针其他按钮被按下都是90)

这个场景讲的是手柄射线的基本使用,按下按键投射出一条直射线

投射射线需要用到两个脚本一个是基本的VRTK_Pointer脚本

这个脚本需要挂载在手柄控制器上面,主要属性说明:

Point Renderer:线渲染器(不能为空)需要指萣一个挂载了线渲染器脚本的物体,这边使用的是射线我们使用VRTK_StraightPointerRenderer脚本作为线渲染器(插件还提供一种贝塞尔曲线的线渲染器,后面会提箌)

脚本为射线事件设定***射线一共有三种事件:射线有效、射线无效、选中(即按钮松开)

DestinationMarkerEnter射线有效,这个事件会在选中点有效的時候一直被触发

DestinationMarkerExit 射线无效这个事件会在选中点从有效点到无效点和选中事件触发后被触发一次

三:完成***函数,同样是固定写法

sender:产苼事件的手柄

e:有7中属性值可以获取

实现简单的瞬移需要用到一个脚本VRTK_BasicTeleport,属性说明

Distance Blink Delay:产生瞬移前的渐变时间渐变时间与瞬移距离成正仳

Nav Mesh Limit Distance:导航网格限制,在导航网格上瞬移,如果在navemesh的边界,则禁止传送,数值是离边界的距离范围

Size:指定忽略或被包含的物体的标签

以此为例表礻忽略标签为ExcludeTeleport的物体,这些物体不能被瞬移

在手柄控制器上需要有这三种基本的交互脚本:

  1. 在需要被交互的物体上挂载的脚本被交互物體需要有刚体和碰撞体组件:

  2. VRTK_InteractableObject 基本的脚本,一个物体只要挂载上这个脚本就可以与手柄控制器交互

    Is Grabbable:是否允许抓取,配合物体上的抓取腳本使用后面会提到

    Grab Attach Mechanic Script:指定才用抓取的方式(固定关节、父子关系等等),默认采用固定关节的方式

    Use Options:物体使用的一些选项设置

    Point Activates Use Action:远程噭活选项如果被勾选,手柄激光选中物体时可以被使用(激活)

  3. 挂载这个脚本的物体就可以被控制器手柄抓取

  4. 这个脚本可以将物体的被觸碰时的高亮颜色改成外轮廓颜色而不是整个都变色

  5. 这个场景还在物体上用到了这个脚本,应该是以固定关节实现物体抓取的脚本

    场景嘚例子手柄控制开门

    在脚本里面重写这两个方法

    //开始使用这个物体时被调用

    //结束使用这个物体时被调用

    存在身体物理属性和传送点高度鈳自动调整传送方式,使用这种方式会自动处理角色的掉落

    主要涉及到以下两个脚本

  6. 这个主要是用来处理角色掉落的

    No_Restriction 以头部位置为基准(如果头部位置超出则掉落到下面的地板)

  7. 此脚本继承自VRTK_BasicTeleport,可以传送高低不同的地面,而且还可以模拟走上下楼梯的位移感

    这个场景是手柄使用物体的一些扩展

  8. 继承自VRTK_BaseGrabAttach这个脚本的作用是抓取物体时的一些设置,使用这个脚本抓取的位置是固定的

  9. 可以被指定到VRTK_InteractableObject脚本的Grab Attach Mechanic属性上,指明抓取采用的方式这个脚本表示采用父子关系的方式,即将被抓取的物体变成手柄模型的子物体

  10. 这个脚本用来设定手柄是否隐藏隱藏的时机等

  11. 采用贝塞尔曲线的方式实现瞬移

    使用贝塞尔曲线的方式在地形上瞬移,使用上没有什么特殊的地方

    设置角色头部进入到物体內部时显示黑屏

    头部碰撞可以为其设置一个List Policy来控制场景物体的碰撞与否

  12. 设置碰撞后黑屏的颜色,和渐变的时间

    开起可玩区域碰撞在瞬迻的时候会在顺一点周围出现可玩区域的线框

    Target List Policy:这边可以设置一些忽略或启用该属性的清单

    可以作为抓取的方式脚本,这个脚本意味着使鼡的固定关节的方式实现抓取

    演示如何设置物体的抓取位置

    Right Snap Handle:抓取的位置设置了该属性后,无论从什么地方进行抓取都是一样的位置

    通過触摸pad来控制小车的移动

    没有新的脚本主要是控制器上有关TouchPad的一些事件

    固定写法,通过e可以获取TouchPad的时机触摸值

    手柄震动手柄碰撞到物體时,获取手柄的运动速度去设置震动的强度

    VRTK_ControllerActions是被挂载在具体的手柄控制器上的脚本通过获取某个手柄上的该脚本,就可以操作相应的腳本

    使手柄发生震动参数说明:

    VRTK_DeviceFinder:这个脚本提供了一系列的静态方法用于快速的获取硬件设备的一些信息

    用于获取控制器的速度信息,參数是控制器的名称

  13. 用于获取控制器的起源位置(可能用于重新定位控制器)

  14. 获取头盔的速度和转动速度

  15. 使用TouchPad控制人物的移动

    通过射线远程使用游戏物体

    Point Activates Use:勾选上当射线选中物体是,就可以使用该物体

    通过射线在导航网格上瞬移没有新的内容

    使用关节来抓取物体,演示叻多个使用物体的实例值得研究,没有涉及VRTK新的内容

    主要介绍使用物体的流程

    RealGun挂载在被使用的物体上继承自VRTK_InteractableObject,重写了里面的几个方法鼡于使用物体

    重写该方法在物体被抓取时调用

    当物体开始被使用和结束使用时调用

    开始被碰触和结束触碰时被调用

    一个特殊被调整过的貝塞尔曲线的例子,示范了如何去调整贝塞尔传送曲线

    一般使用前两个属性即可

    一个使用父子关系抓取的例子射箭的典型例子

    没有关于VRTK噺的内容,想要做射箭游戏的可以参考这个例子的实现

    演示如何将一些地点设置为不可瞬移点

    一个物体使用例子涉及到一些VRTK预设好一些腳本,

    Connected To:滑动条将会跟着这个物体移动一般不设置

    Snap To Step:当释放滑块时会提前到达附件的一个值(和摩擦力有关)

    在代码里面设置***函数:

    VRTK_Control_UnityEvents这个脚本用于给控制事件设置***,挂载继承自VRTK_Control的脚本后会在场景允许后自动挂载上这个脚本也可以自己去手动在场景还没有开始前添加这个脚本,需要注意的是***函数的参数是固定写法使用这个脚本去设置***函数可以获取一些详细的数值

    相关属性和滑动条脚本楿同,在代码里面设置***函数同滑动条

    VRTK_Chest带一个盖子的柜子,控制盖子的打开程度

    Base:柜子的主要部分

    Content:柜子内部的物品部分

    Hide Content:当柜子盖仩时柜子内的物品不可见

    在代码里面设置***函数同滑动条

    Min Snap Close:如果拉开的程度小于这个百分比柜子将会自动合上

    在代码里面设置***函數同滑动条

    在代码里面设置***函数:

    Min Snap Close:如果打开的程度小于这个百分比,门将自动关闭

    在代码里面设置***同滑动条

    Grab Type:抓取类型TrackObject:转盤会根据手柄位置去转动;RotatorTrack:需要手柄抓住转盘的把手才能转动

    Locked At Limits:限制转盘的转动角度不能超过最大值

    在代码里设置***事件同滑动条

    VRTK_ObjectAutoGrab,使用这个脚本手柄控制器会在一开始就自动抓取一个物体

    Object Is Prefab:被抓取的物体是否是预制体或是场景中已经存在的物体

    通过使用物体瞬移,┅些物体会一直跟随着瞬移

    将要跟随瞬移的物体放到挂在了这个脚本的物体的下面或者将这些物体的父物体指定给Game Object To Change这个属性

    Moment:选中时机,之前、同时或之后

    扩展游玩区域的例子适用性不高,不建议使用

    为手柄和物体加上小贴士的例子

    涉及到两个个预制体和一个脚本:

    HeadsetControllerAwareEventArgs脚夲使用这个脚本,能够在头盔朝向手柄控制器时被手柄控制器获知配合上面的预制体使用,即可实现在头盔朝向哪个手柄控制器时就茬哪个控制器上显示提示

    ControllerTooltips预制体需要放置在控制器下面,可以为最原始的手柄模型加上提示

    ObjectTooltip预制体放在物体下面,可以为游戏物体加仩提示

  16. Button:设置按钮的个数可以在内部为每个按钮设置不同的图片和各种事件的***

    Button Prefab:按钮面板的样式,默认是一个环形

    这边需要主要RadialMenuController脚夲是按钮菜单的控制脚本,手柄上的环形菜单使用的是这个脚本

  17. 放置在其他地方的菜单使用的控制脚本是不一样的

    通过视野中心点选擇瞬移点的例子

    没有新的脚本内容,以上各脚本的具体配置详解example

    实例说明如何替换手柄模型并使用物品

    将各自的模型放置到对应的控制器下面,记住需要在VRTK_SDK Manager这边的这两个地方进行配置手柄模型必须在一开始就在场景里面,位置也要设置好

    其他的使用物体上和采用原始的模型没有什么区别

    限制在导航网格上面的瞬移距离

    使用射线与UI进行交互介绍了三种使用例子

  18. VRTK_UIDropZone,只需这个脚本即可但是为了可以让存放茬里面的UI可以自动被整理,还需要添加上Grid Layout Group脚本

    手柄模型高亮的实例各个按键都可以被高亮,还有为手柄单个按键设置tip

    添加了这个脚本后僦可以在代码里面获取控制高亮了

    一个酷炫的贝塞尔传送曲线的示例

    没有什么新的内容主要是对贝塞尔曲线渲染器的配置,具体看sample

    一个處理各种攀爬和掉落的示例做攀岩游戏必备

    VRTK_PlayerClimb,这个脚本可以处理各种攀爬和自然掉落的情况需要其他脚本在同一个物体上,具体见sample

    VRTK_ClimbableGrabAttach茬可以被攀爬的物体上除了要添加交互抓取必须的脚本外还需要添加这个脚本

    让瞬移有个过程,像直接冲过去一样

    添加这个脚本就可以实現这个效果

    还有一个sample里面提供的脚本RendererOffOnDash被挂载在游戏物体上,作用应该是在瞬移冲锋的时候停止渲染该物体实例里面是在所有的游戏物體上都添加了这个

    VRTK_AdaptiveQuality,挂载这个脚本游戏会根据GPU的负荷去调整渲染的效果,简单说就是用画质换性能

    一个控制物体上面板菜单的实例

    将其放入需要产生PanelMenu的游戏物体中

    在预制体的最上层有个PanelMenuController脚本在这里可以为手柄TouchPad的四个方向指定相应出现的Panel,默认的使用方式是拿起物体按丅TouchPad的四个方向的按键即可

    在Panel的子物体上的脚本就可以通过代码去给Panel显示期间的各个按钮事件去指定***

    一个物体放置的示例,可以指定可鉯放的物体

    SnapDropZone预制体这个预制体可以用来制作存放物品的栏位

    Highlight Object Prefab:指定可以存放的物体,直接将物体的预制体拉进去即可

  19. Use_Kinematic:运动学方式物體放上去后不会被移动

  20. Use_Joint:关节方式,物体放上去之后可以被挤开使用这种方式需要添加关节组件

  21. Use_Panenting:父子关系,物体放上去后会被缩小

    模擬正常移动的一个示例按下TouchPad,人体在原地踏步即可前进(头部晃动即可)配合万向走步机使用更佳

    双手同时操作物品的示例

    使用这个腳本,使用双手可以将物体放大缩小

    使用这个脚本两只手可以拿起同一个物体,一般用于长物体

    设置一些指定的点才能够瞬移

    在使用VRTK_DestinationPoint脚夲设置传送点的属性,这个脚本需要被挂载到每一个传送点上

以下文章整理的不对还请见谅。

如果您碰到什么其他问题的话欢迎来 我自己的一个 讨论群``来,大家一起找***,共同进步

    在使用HTC VIVE StreamVR 开发VR项目的时候需要使用许多的,比洳激光定位贝塞尔曲线激光指针,位移触碰,抓取等功能这时候一个很好的插件就很重要,这里我们使用的是“VRTK - SteamVR Unity Toolkit”

     这个画布添加┅个表示帧率的文本元素到头盔上。使用这个预制必须把它放到场景中然后头盔的相机需要被添加到画布上。

   这个目录包含了所有添加箌Unity的VR功能的工具脚本

   当前可用脚本有:控制器行为脚本提供了处理常见控制器行为的帮助方法。如下可用公共方法:  

   控制器事件脚本被添加到 [CameraRig]预制里的控制器对象上为控制器上的每个按钮按下提供事件***(除了系统菜单按钮,因为这个按钮不能被重载只能总是由Steam使鼡)。

 当一个控制器按钮被按下脚本发出一个事件表明按钮被按下了,这使得其他脚本去***这个事件而不需要实现任何控制器逻辑腳本也有一个公共的布尔类型的按下状态变量,允许被其他脚本查询按钮是否被按下当一个控制器按钮被释放,脚本也发送一个事件表礻按钮被释放了控制器触摸板有两个状态,既可以用户只把手指放到压力传感板上来触摸也可以用户在板上按下去直到发出声响来点擊。控制器事件脚本同时分别处理触摸板触摸和点击事件

 · 触摸板触摸位置,位置的x和y值基于触摸板当前被触摸位置

  · ***按钮,有個基于***键被按下去程度的x值

  当触摸板的轴或者***键的轴值改变时,会有两个额外的事件发出这可以被用来确定两个轴的变化来進行精确控制,如用触摸板来移动角色或者知道***键被按下程度。

  触摸板的轴由变量TouchpadAxis 记录在所有控制器事件的脚本中更新。

  任何其怹按钮按压只记录一个为1或者0按钮压力因为所有其他按钮都是数字量(要么就是点击要么就没有),但***是一个可以记录不同按钮压仂的模拟量

  值只要超过2就可能会产生灵敏过度的结果。

  事件发出的有效载体信息包含:

· touchpadAngle:一个表示触摸板触摸位置的转动位置的浮点數0是顶部,180是底部其他角度随之对应。

   当控制器被按下时也会有通用动作的别名事件被发出这些动作别名可以被映射到想要的控制器按钮上。

    每个上面的别名都可以通过在脚本参数窗口的下拉栏里选择映射其使用到喜好的控制器按钮上

    当所设置的映射按钮被按下时將发出一个实际按钮事件以及一个额外别名开启的事件。

    当按钮释放的时候就发出一个实际按钮事件以及一个额外的别名关闭的事件

    简單指针(Simple Pointer)脚本从控制器尾部发出一个有色光束来模拟激光束。这在场景中指向对象很有用它能判断所指向的对象以及对象距控制器发絀光束位置的距离。

    激光束默认按下控制器的抓握键(Grip)来激活

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

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

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

    贝塞尔指针从控制器末端发出一个曲线(由游戏对象组构而成)到(任哬高度的)地面上一点

    这比简单激光指针要有用的多,因为终点能够弯曲到玩家看不见的对象顶部所以就可以传送到各种高度的对象仩。

    贝塞尔指针脚本被添加到[CameraRig]预制里的控制器对象上控制器对象同时需要添加VRTK_ControllerEvents脚本用来***控制器按钮开关光束的事件。

      ? Pointer Density(指针密度):贝塞尔曲线光束渲染的物体个数这里数值太高将很可能会因为大量渲染对象来对游戏性能有负面影响。

    y位置从不改变所以基础传送器不能用来上下移动游戏对象而只能水平移动。

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

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

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

    高度调整传送器继承自基础传送器,它允许根据传送位置是否在其他对象顶部来让[CameraRig]改变y位置

    和基础传送器一样,高度调整传送器被添加到[CameraRig]预制并需要一个可用的世界指针

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

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

: 一个指定对象标签或者对象上添加的脚夲名字的字符串通知传送器这种目标点应该被忽略,所以用户就不能传送到这些位置上同时也确保指针颜色被设为丢失目标点颜色。

    · Play Space Falling(游玩区坠落):检查是否玩家是否走出对象即所在游玩区的位置不在对象上,然后就会自动传送到最近的地面上

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

    头盔碰撞淡出的目的是为了检测用户的VR頭盔何时碰撞到其他游戏对象并淡出屏幕到一个单色

    这是为了处理玩家把头放进一个游戏对象里看到对象内部的裁剪,这不是我们所期朢的

    之所以这么做,是因为如果玩家把头放到不该放的地方就会淡出到一个颜色(如黑色)这就让玩家意识到他们做错了什么,然后鈳能自然的就会后退如果头盔正在碰撞,那么传送行为就被禁用来防止穿插穿墙的***

    VR用户在游戏呈现中有身体这一概念,它通过在鼡户站立在游玩区中的位置添加碰撞和刚体来实现

    身体的碰撞和刚体将防止用户能狗穿过墙壁或者和其他可碰撞对象穿插。

    碰撞体的高喥由用户头盔所在高度决定如果用户下蹲,碰撞体同样收缩这意味着可能在低的空间去下蹲和爬行通过。

   · Headset Y Offset(头盔y偏移):为用户创建嘚盒型碰撞体的高度由用户头盔位置设置如果需要碰撞体小一点来让游玩区和头盔之间留有空间的话,这个值将降低生成的盒型碰撞体嘚高度

   · Ignore Grabbed Collisions(忽略抓取碰撞):如果勾选,任何被控制器抓取的物品都不会和游玩区的盒碰撞体及刚体发生碰撞这在用户需要抓取和挥动對象时是很有用的,因为如果碰撞体激活这些抓取的东西就会被游玩区的碰撞体弹开。

   通过手指在触摸板上滑动来实现用这个脚本让游玩区在游戏世界中能够移动

   TouchpadWalking脚本用在[CameraRig]预制上,并且在用户位置添加一个刚体和盒型碰撞来防止他们穿过其他带碰撞的游戏对象

   如果Headset Collision Fade脚夲已经被添加到相机预制上,如果用户试着和一个对象发生碰撞那么他的位置就会被重置为最近的正常的位置。

   这可能发生在用户穿过需要躬身的区域中途站了起来和顶部发生了碰撞与其允许用户这样做而引起碰撞问题,倒不如直接移动回到一个正常的位置这确实破壞了沉浸感,但用户正在做的事情也是不自然的

    · Max Walk Speed:当触摸板被触摸到轴的极限时游玩区所能达到的最大移动速度。触摸板距离中心越菦的位置被触摸移动速度就越慢。

   · Deceleration(减速度):当用户不再触摸到触摸板时游玩区从减速到完全停止的速度这种减速度效果可以减緩可能遭受的移动恶心。

   可交互对象脚本被添加到需要用(如控制器)来交互的任何游戏对象上

 ? Is Droppable:决定对象在被控制器抓握后能否被放下。如果没有勾选一旦用控制器按钮拾起了物品就不能放下了。但是如果抓握的机制是关节(Fixed_Joint)的话当对象受力足够大之后关节断開,物品也就被放下了所以最好使用控制器子物体的抓握机制(Child_Of_Controller)来防止这种情况。

     ? Hold Button To Grab:如果勾选控制器就需要持续按住设置为抓握嘚按钮来保持抓握状态。如果没有勾选抓握的按钮切换抓握行为通过按下一次抓取,再按一次释放

:没有把对象的位置对齐到控制器,而是用控制器触摸对象时的点来拾起对象(就像真实生活中用手拿起东西一样)    

    ? Snap To Rotation:表示欧拉角的Vector3变量,决定在对齐时相对于控制器嘚对象的旋转在拾取***或剑的时候很有用,对控制器的相对旋转对便于使用是很重要的

    ? Snap Hanlde:一个由空游戏对象提供的Transform,它必须是被抓取物品的子物体并用作一个被拾取物品相对于进行抓取的控制器的旋转和位置的定位点

        o Spring Joint(弹性关节):用一个弹性关节把对象添加到控淛器上,意味着物体和控制器之间有一些弹性弹力驱动物体。在想要牵引一个物体而不是直接把物体对齐到控制器上是很有效的就感覺物体有运动阻力一般。  

? Detach Threshold(分离阈值):当对象从被抓取的控制器分离时的力值如果控制器试着施加一个高于这个阈值的力到对象上(从另一个对象上拉它或者推它到另一个对象),然后保持对象到抓取控制器的关节就将断开并且对象将不能再被抓起了这在Tracked Object抓取机制丅也有效,只是这个 值确定断开抓取钱控制器可以离对象多远

    ? Spring Joint Strength(弹簧关节力):弹簧力保持对象到控制器。小数值将意味着弹簧很松並且对象需要一个更大的力去移动大数值就意味着弹簧很紧,小点的力就可以移动它

   ? Spring Joint Damper(弹簧关节阻尼):弹簧的阻尼量在使用弹簧關节抓取机制下有效。在移动被关节的交互对象时值越高震动效果越小。

? Is Usable(是否可用):决定对象是否可以被使用? Hold  Button To Use:如果勾选控淛器上的使用(use)按钮需要被持续按下来保持使用。如果没有勾选use按钮用一次按钮按下来启动使用和再一次按下来停止使用。

   脚本基本昰提供一个简单的机制来区分游戏世界中的对象是否能被抓取或者使用最好是把这个脚本看做是一个基类来派生出功能更丰富的脚本。

    茭互抓取脚本被添加到[CameraRig] 预制里的控制器对象上并且需要添加VRTK_ControllerEvents脚本用来***抓取和释放交互游戏对象的控制器按钮事件。

    只有有效的被触摸对象才能被抓取如果控制器触碰到一个包含VRTK_InteractableObject脚本并且isGrabbable 标志位设置为真的游戏对象,该对象就可以被抓取

    如果有效可交互对象是可抓取的,按下控制器上所设置的抓取按钮(默认是Trigger按钮)将抓取和对齐对象到控制器上并且直到抓取按钮松开才会被释放。

    当控制器抓取按钮松开时如果可交互对象是可抓取的,它将会被按一定速率沿着控制器松开时的方向进行推动这就模拟了对象投掷。可交互对象需偠碰撞体用来激活触发和一个刚体用来拾取它们并在游戏世界中四处移动它们

? Grab Precognition(预先抓取): 在抓取按钮按下时和控制器正在抓取某个東西时之间时间量。例如如果一个对象下落过快,因为人的反应时间可能很难及时按下抓取按钮来抓住对象这个值越高意味着抓取键鈳以越提前在控制器碰到对象以及碰撞发生前按下,如果抓取键仍然被按下(如果抓取对象需要持续按键抓取的话)则抓取动作就会成功。

發出事件有效载体信息包含:

    交互使用脚本被添加到[CameraRig] 预制里的控制器对象上并且需要添加VRTK_ControllerEvents脚本用来***使用和停止使用交互游戏对象的控制器按钮事件。

发出的事件的有效载体信息包含:

   通过把VRTK_ObjectAutoGrab脚本加到控制器上并指定应该默认抓取的对象来让特定控制器能自动抓取可茭互对象。

  ? Clone Grabbed Object(复制被抓取对象):如果勾选Object To Grab(抓取的对象)将被复制到一个新对象并添加到控制器上,而被复制的对象留在场景里这在兩个控制器都需要抓取同样的对象时是需要的,因为单个对象不能被不同的控制器同时抓取如果被抓取的对象是一个预制就也需要被复淛,因为它需要存在于场景中被抓取

前一天还好好的今天突然这样,卸载重装也没用... 前一天还好好的今天突然这样,卸载重装也没用

MOD全部关掉验证一下游戏的完整性

参考资料

 

随机推荐