HTC Vive VR房产项目开发二(开关门)

来源:互联网 发布:笨方法学 python ex43 编辑:程序博客网 时间:2024/04/29 06:09

一、新建一个空物体,重命名为Door,将门作为Object的子物体,玻璃作为门的子物体,将门的位置和大小信息拷贝到空物体上


二、当手柄接触门时打开

1、创建一个脚本door继承自VRTK_InteractableObject(当挂载到物体上时会用于父类VRTK_InteractableObject所有的方法),并添加到物体Door上

脚本内容:

using System.Collections;using System.Collections.Generic;using UnityEngine;using VRTK;using DG.Tweening;public class Door : VRTK_InteractableObject {    private bool isOpen = false;    //重写Start,该方法已经过时,使用后不会调用,使用下面的方法代替    //public override void StartUsing(GameObject currentUsingObject)    //{      //base.StartUsing(currentUsingObject);      //transform.rotation = Quaternion.Euler(new Vector3(3,140,0));      //Debug.LogError("Start Using......................");    //}    public override void StartUsing(VRTK_InteractUse currentUsingObject = null)    {        base.StartUsing(currentUsingObject);        //transform.rotation = Quaternion.Euler(new Vector3(-90,140,90));//三个参数分别是最终位置时物体x,y,z轴上的旋转角度,该方法没有缓动效果           if (isOpen)        {            //transform.DORotate(new Vector3(-90, 0, 90), 1.5f) 通过1.5s的时间旋转到x,y,z轴分别为0,0,0的位置            //SetEase(Ease.OutBounce)  设置回弹类型            //transform.DORotate(new Vector3(-90,0,90),1.5f).SetEase(Ease.OutBounce);            //transform.DORewind(true);            transform.DORotate(new Vector3(-90, 0, -270), 1.5f).SetEase(Ease.OutBounce);          }        else        {            //transform.DORotate(new Vector3(-90, 140, 90), 1.5f) 通过1.5s的时间旋转到x,y,z轴分别为0,0,0的位置            //SetEase(Ease.OutBounce)  设置回弹类型           // transform.DORewind(true);            transform.DORotate(new Vector3(-90, 140, 90), 1.5f).SetEase(Ease.OutBack);                    }        isOpen = !isOpen;    }}
挂载到Door上,并且勾选isUsable


2、给左右手柄都添加以下组件


3、勾选VRTK_Pointer下的Interact With Object,这时当指针移动到门上并且按下扳机键的时候,可以开关门


4、运行后的结果

指针指到门上,并按下扳机键,门由关闭变成打开



门打开的时候,指针指到门上,并按下扳机键,门关闭


门关闭的时候,手柄移动到门上,按下扳机键后门打开


门开启的时候手柄碰到门并按下扳机键,门由开启变成关闭

开启状态


关闭状态








三、抓取物体

1、选中物体,点击Window-->VRTK-->SetUp Interactable Object,设置完成后点击Setup Selected object(s)


2、勾选Precision Grap的复选框(精确抓取)










注:

1、参考资料:http://edu.manew.com/course/344/learn#lesson/5751

2、遇到的问题:VRTK的脚本方法不调用

复写了该方法,但是并没有调用,并且方法下面有波浪线标注


原因:方法过时了,已经被新的方法替代了。当鼠标移动到方法名上时会提示新的方法名

解决办法:使用新的方法替代老的方法。如把上面的方法改为下面的方法,就可以正常调用了


3、物体没有进行旋转

原因:物体的static属性被勾选了,此时物体不会参与任何关于运动的行为

解决办法:取消勾选static复选框,此时就可以正常运行了






原创粉丝点击