HTC Vive VR房产项目开发二(开关门)
2017-07-15 21:24
330 查看
一、新建一个空物体,重命名为Door,将门作为Object的子物体,玻璃作为门的子物体,将门的位置和大小信息拷贝到空物体上
二、当手柄接触门时打开
1、创建一个脚本door继承自VRTK_InteractableObject(当挂载到物体上时会用于父类VRTK_InteractableObject所有的方法),并添加到物体Door上
脚本内容:
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复选框,此时就可以正常运行了
二、当手柄接触门时打开
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复选框,此时就可以正常运行了
相关文章推荐
- HTC Vive VR房产项目开发三(添加物体提示)
- HTC Vive VR房产项目开发四(切换家具样式)
- HTC Vive VR房产项目开发一(手柄提示+户型图)
- HTC Vive VR房产项目开发五(通过材质列表切换地板材质)
- 【VR开发】htc vive+unity 3D 简单保龄球游戏
- Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线
- HTC Vive VR Unity 开发入门
- Htc Vive Sdk(OpenVR),Unity3d 开发,UGUI界面响应
- Htc Vive Sdk(OpenVR),Unity3d 开发,UGUI响应代码分析篇
- Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线
- 使用UE4开发VR项目_性能优化(三)_思路和方法
- 基于htc vive设备的UE4 VR项目开发需要修改源码的地方
- (部分原创)unity项目开发中VR工程的优化(下)
- VR 第六篇 HTC Vive Lighthouse
- 使用UE4开发VR项目_性能优化(二)_思路和方法
- Vive开发之VR射箭
- unity开发htc VR实现瞬移功能
- HTC VIVE SDK 中的例子 hellovr_opengl 程序流程分析
- 今天我来整理下自己开发CM完成第一个项目HTC a5 的编译过程
- 使用UE4开发VR项目_性能优化(二)_思路和方法