Unity教程合集VR智库unity3D技术分享

Steam VR Unity VRTK Examples 2 物

2016-11-22  本文已影响0人  浪尖儿

005_Controller_BasicObjectGrabbing 基本物体抓取

这个场景展示了怎样实现高亮物体、抓取物体。首先使用控制器触碰物体,可以设置物体的是否高亮、高亮颜色等属性,然后按下Grip键,拿起物体。当松开Grip键的时候,物体沿着控制器的速度和方向被扔出去,如果控制器没动的话,就是自由下落了。下面我们来详细分析一下这个场景的物体和脚本。

高亮

要实现控制器触碰物体的高亮效果,需要两步操作:

  1. 在控制器对象上添加VRTK_InteractTouch脚本
  2. 在需要高亮效果的物体上面添加VRTK_InteractableObject脚本

下面来看看这两个脚本怎么用

VRTK_InteractTouch脚本

vrtk_interacttouch

参数说明:

ControllerTouchInteractableObject

VRTK_InteractableObject脚本

vrtk_interactableobject

参数说明(这里先解释触碰相关的部分):

当物体高亮或者取消高亮的时候,可以通过ControllerTouchInteractableObject和ControllerUntouchInteractableObject两个事件来处理。

边缘高亮实现

在默认情况下,物体高亮的时候是整体变颜色的效果。VRTK中提供了另外一种形式的高亮,就是显示物体的轮廓。VRTK_OutlineObjectCopyHighlighter这个类是做的这个工作。它继承自VRTK_BasicHighlighter这个抽象类。使用的时候,只需要把这个类添加到可交互的物体上面。

参数说明:

高亮效果截图

边缘高亮 全局高亮颜色 可交互物体特定的高亮颜色

抓取

要实现控制器触碰到物体之后的抓取效果,同样需要两步操作:

  1. 在控制器对象上添加VRTK_InteractGrab脚本
  2. 在需要被抓取的物体上面添加VRTK_InteractableObject脚本,其实做高亮效果的时候已经添加过了

下面来看看这两个脚本怎么用

VRTK_InteractGrab脚本

vrtk_interactgrab

VRTK_InteractGrab脚本附加到[CameraRig]Prefab的控制器对象,Controller对象需要附加VRTK_ControllerEvents脚本,因为它使用此脚本监听控制器按钮事件以捕获和释放可交互的游戏对象。它侦听AliasGrabOn和AliasGrabOff事件,以确定应该何时抓取对象并应该释放。

控制器对象还需要附加VRTK_InteractTouch脚本,因为它用于确定何时触摸可交互对象。只有有效的被触摸对象可以抓取。

如果Controller触摸了包含VRTK_InteractableObject脚本并且标志isGrabbable设置为true的游戏对象,则可以抓取对象。

如果有效的可交互对象是可抓取的,那么按下控制器上的设置抓取按钮(默认为Grip)将抓取并捕捉对象到控制器,并且将不释放它,直到释放抓取按钮。当释放控制器抓取按钮时,如果可互动游戏对象是可抓取的,那么它将被沿着控制器所处的方向和速度推进,这可以用来模拟对象投掷。

可互动对象需要一个碰撞器来激活触发器和一个刚体来拾取它们并将它们移动到游戏世界周围。

参数说明:
Controller Attach Point:控制器模型上的刚体点,用于捕获抓取的对象(默认为尖端)。
Hide Controller On Grab:当有效抓取发生时,是否隐藏控制器模型。
Hide Controller Delay:在隐藏控制器之前等待的秒数。
Grab Precognition:抓取按钮被按下到控制器正在触摸某物要抓取之间的时间量。例如,如果物体以快的速率下落,则由于人的反应时间,很难及时地按下抓取按钮以抓住物体。这里较高的数字意味着在控制器触摸对象之前可以按下抓取按钮,并且当发生碰撞时,如果抓取按钮仍然被按下,则抓取动作将成功。
Throw Multiplier:与要抛出的任何对象的速度相乘的量。当放大[CameraRig]以模拟把物体扔的更远时,这可能很有用。
Create Rigid Body When Not Touching:如果选中此项并且当按下抓取按钮时,控制器未触及可交互对象,则会在控制器中添加刚体以允许控制器推动其他刚体对象。

当物体被抓取或者释放的时候,还可以使用ControllerGrabInteractableObject和ControllerUngrabInteractableObject这两个事件,处理事件。

VRTK_InteractableObject脚本

上面介绍该脚本的触碰部分,下面来看看抓取的部分:

抓取效果示意图

抓取可交互物体

参考:

https://vrtoolkit.readme.io/

上一篇 下一篇

猜你喜欢

热点阅读