使用可交互对象 (VRTK_InteractUse)
发表于2016-11-02
导语
SteamVR_Unity_Toolkit工具包API详解:VRTK_InteractUse
使用可交互对象 (VRTK_InteractUse)
概述
Interact Use脚本绑定在[CameraRig]下的手柄游戏对象上.并且手柄游戏对象必须绑定VRTK_ControllerEvents脚本,来监听手柄上按钮的事件,抓取/释放可交互物体等.它监听的是AliasGrabOn和AliasGrabOff事件,当这两个事件被触发,那么本脚本内委托给这两个事件的方法就会被回调.
该手柄游戏对象也需要绑定VRTK_InteractTouch脚本,来确定可交互物体是否被触碰.可交互对象只有先被触碰才能进行使用.
一个对象必须包含VRTK_InteractableObject脚本,并且参数isUsable设为true时,才可以使用。
如果一个有效交互对象可以使用,那么按下手柄上的使用按钮(默认是Trigger),该交互对象的StartUsing方法会被调用。
Inspector可见参数
Hide Controller On Use: 当有效的使用行为开始时是否隐藏手柄
Hide Controller Delay: 隐藏手柄前等待的时间,单位为秒
事件类
ControllerUseInteractableObject - 当有效对象开始被使用时通知正在监听本事件的方法开始调用
ControllerUnuseInteractableObject - 当有效对象停止被使用时通知正在监听本事件的方法开始调用
事件参数
uint controllerIndex - 正在执行交互的手柄的索引
GameObject target - 正在与手柄进行交互的游戏对象
公共方法
GetUsingObject/0
public GameObject GetUsingObject()
Parameters
none
Returns
GameObject - 正在被当前手柄使用的游戏对象
GetUsingObject方法返回正在被当前手柄使用的游戏对象
ForceStopUsing/0
public void ForceStopUsing()
Parameters
none
Returns
none
ForceStopUsing方法会强制手柄停止对正在接触的游戏对象的使用行为,同时设置交互对象脚本的参数UsingState的值为0
ForceResetUsing/0
public void ForceResetUsing()
Parameters
none
Returns
none
ForceResetUsing方法会强制手柄停止对正在接触的游戏对象的使用行为,但是不修改交互对象脚本的参数UsingState的值
私有/保护方法
IsObjectUsable/1
IsObjectHoldOnUse/1
GetObjectUsingState/1
这三个方法返回一些交互对象的状态参数,是否可使用,需不需要持续按键来使用,当前的使用状态等。
SetObjectUsingState/2
Parameters
GameObject - 交互对象
int - 值
Returns
none
SetObjectUsingState方法用来设置交互对象脚本的参数UsingState的值。
Monobehaviour 方法
Awake
VRTK_InteractTouch和VRTK_ControllerActions脚本的初始化。
OnEnable
开始事件监听
OnDisable
停止事件监听,强制停止使用
Example
SteamVR_Unity_Toolkit/Examples/006_Controller_UsingADoor simulates using a door object to open and close it. It also has a cube on the floor that can be grabbed to show how interactable objects can be usable or grabbable.
SteamVR_Unity_Toolkit/Examples/008_Controller_UsingAGrabbedObject which shows that objects can be grabbed with one button and used with another (e.g. firing a gun).