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

一、新建一个空物体,重命名为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复选框,此时就可以正常运行了






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值