<VRTK学习三> 拿取使用物体

来源:互联网 发布:网络布线收费标准 编辑:程序博客网 时间:2024/06/07 11:26

一、拿取物体

要实现拿取的功能,首先给要拿取的物体添加碰撞器,VRTK_InteractableObject脚本,



Disable When Idle: 如果该检查被选中,那么当对象没有与之交互时,将禁用interactable对象脚本。这将消除相互作用的对象对每个帧的调用的潜在数量。

Touch Hightlight Color:高光,该颜色将会覆盖全局的颜色(比如在VRTK_InteractTouch脚本上的修改)。

Allowed Touch Controllers: 决定哪个控制器可以发起接触。

Ignored Colliders:当被接触时,在该物体上的一组碰撞器被忽略。

Is Grabble:决定是否可以被抓取。

HoldButtonToGrab:选中后抓取按键需要一直按着,不选的话按一下物体在手上,再按一下就掉了

Stay Grabbed On Teleport:选中后即使瞬移,物体仍然会在手上。

Valid Drop:决定了在什么环境下抓住的物体可以被丢下。

Grab Override Button:覆盖全局的抓取按键

Allowed Grab Controllers:决定哪个控制器可以被抓取

Grab Attach Mechanic Script:这个决定了被抓去的物体将以什么样的形式被抓取,如果未曾设置相关参数,

那么第一个抓取脚本将会被使用,如果没有,则使用刚性连接脚本将会在运行时自动产生

Sencondary Grab Action Script:当另外一只手柄控制器尝试抓住该物体的时候,采取什么操作。如果未曾设置相关参数,

这个脚本将会被使用,如果没有,将没有任何反应。

Use Only if Grabbed:如果选中的话,使用只能用在物体当前被抓取时。

Pointer Activates(激活) Use Action:当射线点击到相互作用的物体上,该物体若是没有选择 Hold Button To Use 那么Using方法将会被使用,

且指针无法激活时也能被使用。如果使用这个设置,那么这个世界指针将不会抛出目标集事件,因为它可以防止在使用指针的对象时发生不需要的远程传送。



当我们需要自定义功能的时候,我们就要开始自己写脚本了,我们可以继承这个类,添加自己的功能

using System.Collections;using System.Collections.Generic;using UnityEngine;using VRTK;public class interacted : VRTK_InteractableObject{    //开始接触    public override void StartTouching(GameObject currentTouchingObject)    {        base.StartTouching(currentTouchingObject);    }    //停止接触    public override void StopTouching(GameObject currentTouchingObject)    {        base.StopTouching(currentTouchingObject);    }    //抓取    public override void Grabbed(GameObject currentTouchingObject)    {        base.Grabbed(currentTouchingObject);    }    //放下物体    public override void Ungrabbed(GameObject currentTouchingObject)    {        base.Ungrabbed(currentTouchingObject);    }    //开始使用    public override void StartUsing(GameObject currentTouchingObject)    {        base.StartUsing(currentTouchingObject);    }    //停止使用    public override void StopUsing(GameObject currentTouchingObject)    {        base.StopUsing(currentTouchingObject);    }    }

最后在控制器脚本上添加VRTK_Interact Touch,VRTK_Interact Use,VRTK_Interact Grab脚本。


VRTK_Interact Controller Appearance  脚本,,可在控制器和物体交互时进行隐藏。