using UnityEngine;
/// <summary>
/// 手柄射线原代码要添加好1. SteamVR_LaserPointer  2.SteamVR_TrackedController
/// 以下是负责射线抓取的代码
/// </summary>public class catchObject : MonoBehaviour
{SteamVR_LaserPointer slp;   //射线对象SteamVR_TrackedController stc;    //控制器对象GameObject target = null;    //指向可以拾取的物体void Start(){slp = GetComponent<SteamVR_LaserPointer>();    //得到射线对象slp.PointerIn += OnpointerIn;    //响应射线的进入事件slp.PointerOut += OnpointerOut;    //响应射线的离开事件stc = GetComponent<SteamVR_TrackedController>();    //得到手柄控制器的对象stc.TriggerClicked += OnTriggerClicked;    //响应手柄扣动事件stc.TriggerUnclicked += OnTriggerUnclicked;    //响应手柄松开事件}void Update(){}void OnpointerIn(object sender, PointerEventArgs e) //射线进入事件{GameObject obj = e.target.gameObject;//得到指向的物体if (obj.tag.Equals("Can Cach")) //如果我们选择的物体他的标签是Can Cach{target = obj;  //用全局变量记录这个物体}}void OnpointerOut(object sender, PointerEventArgs e)//射线离开事件{if (target != null)  //如果是在能拾取的物体上离开{target = null;  //不再记录这个物体了}}void OnTriggerClicked(object sender, ClickedEventArgs e)//用来响应扳机扣动事件的行为{if (target != null)  //如果拾取到了东西{Rigidbody r = target.GetComponent<Rigidbody>();    //如果物体有刚体就拿到这个刚体Destroy(r);    //销毁掉这个对象target.transform.position = transform.position;//这个拾取的物体位置等于手柄位置target.transform.parent = transform;//这个可以拾取的物体的父节点是手柄的节点}}void OnTriggerUnclicked(object sender, ClickedEventArgs e)//用来响应扳机松开事件的行为{if (target != null)  //如果拾取到了东西{target.AddComponent<Rigidbody>().AddForce(transform.forward*500);//给被拾取的物体增加刚体跟向前的力      target.transform.parent = null;//不再是手柄的子物体   }}
}
using UnityEngine;/// <summary>
/// 添加VR模块1.SteamVR_TrackedController
/// 以下代码负责发射物体
/// </summary>
public class SteamVR_TrackedController_Shoot : MonoBehaviour
{SteamVR_TrackedController stc;    //控制器对象void Start(){stc = GetComponent<SteamVR_TrackedController>();    //得到手柄控制器的对象stc.TriggerClicked += OnTriggerClicked;    //响应手柄扣动事件}void OnTriggerClicked(object sender, ClickedEventArgs e)    //用来响应扳机扣动事件的行为{GameObject testObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);    //创造一个原始的圆形模块(CreatePrimitive创造原始)(PrimitiveType原始模型)testObject.transform.position = transform.position;    //创造模型的位置就是手柄的位置testObject.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);    //将原始模块按0.1比例进行缩放testObject.AddComponent<Rigidbody>().AddForce(transform.forward * 1000);    //将这个模块增加刚体组件(AddComponent)并增加力(AddForce)testObject.tag = "Can Cach";//增加标签 这个标签设定的是可以拾取的物体}}

unity3d VR手柄射线拾取,投掷,发射可拿去的物体相关推荐

  1. Unity中使用VR手柄射线触发UI事件

    创建射线检测,确定起点和终点 public class LineController : SingletonMono<LineController> {//属性[HideInInspect ...

  2. unity3D VR手柄模型替换

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  3. Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线

    开发引擎:Unity3d 设备:Htc Vive Htc Vive Sdk(OpenVR),Unity3d 开发,Hello World Htc Vive Sdk(OpenVR),Unity3d 开发 ...

  4. 【虚拟现实】Unity3D+VR的实现

    [虚拟现实]Unity3D+VR的实现 针对CardBoard一类的眼镜用Unity3D开发VR内容. 1.创建VRCamera: 使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本 ...

  5. SteamVR 2.x 手柄射线与3D物体交互(9)

    UI模块在前面已经讲完了,从本章开始,会着重介绍手柄与3d游戏物体之间的交互,我们平时项目开发,最常用的就是手柄射线点击物体.手柄触碰以及手柄拾取物体,先来聊聊射线点击物体. 沿用的思想我们之前有说过 ...

  6. Pico UnityXR中的手柄射线

    PicoXR中的手柄射线 前言 ​ 本文是继PicoXR中的输入事件博客的进一步补充,针对手柄的射线相关API进行解析,并以VR水果忍者为例子封装手柄射线的事件. 手柄射线的获取 XRRayInter ...

  7. UE4 射线拾取三维画线

    虽然有人建议UE4使用C++创建VR项目,能避免一些坑爹的错误,但是我用C++创建,竟然问题更多,还存在创建不了的情况,也不知道是不是我的操作问题,快疯了. 于是我还是选择了蓝图创建VR项目,但是.. ...

  8. unity vr手柄移动_移动内外VR跟踪,现在可通过Unity在手机上轻松使用

    unity vr手柄移动 VR is all about immersion, and the ability to track the user's position in space is a k ...

  9. Project Caliper:目标是打造最佳VR手柄

    一提到Valve Index,人们很快联想到它的五指追踪VR手柄,这款支持手势追踪和体感反馈的高端VR手柄,是市面上最强大的C端VR手柄之一.尽管如此,它依然存在许多缺陷,比如配备的小型摇杆质量不佳. ...

最新文章

  1. Windows RT复活!Windows 10 Cloud首波截图曝光
  2. 文本分类与聚类(text categorization and clustering)
  3. 实战|QUIC协议助力腾讯业务提速30%
  4. 华硕服务器显示模块,华硕远程管理模块 ASMB4-iKVM 华硕服务器主板专用 现货 IPMI...
  5. JSK-16501 扫雷游戏【谜题】
  6. bzoj 1605: [Usaco2008 Open]Crisis on the Farm 牧场危机(DP)
  7. 5个强盗分100颗宝石 你该怎么分?
  8. TFS配置过程中的错误
  9. 拓端tecdat|matlab使用Copula仿真优化市场风险
  10. Linux下ls、vi命令失效的解决办法
  11. Python 项目打包各种依赖包
  12. python清理浏览器缓存_浏览器缓存看这一篇就够了
  13. 算一串数字的entropy_【一点资讯】数字的作用,远比我们想的多得多 www.yidianzixun.com...
  14. 深度 | 苹果略胜微软一筹,为什么说 ARKit 是 AR 的最好选择?
  15. JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)
  16. 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析
  17. 苹果股价盘后涨超5% 市值一度突破万亿
  18. 国际学术论文写作个人总结-引言(Introduction)部分
  19. 2018年中小学计算机培训,2018年中小学教师全员培训资料.doc
  20. python小白学习第三节

热门文章

  1. Qbao Network 一周项目进展(10.31 - 11.7)
  2. 自制python脚本,6小时获取上千台mysql数据库服务器
  3. # 2021-01-15 #「开源视频管理系统」- 搭建属于自己的视频站点
  4. 李帅将道访武当山,拜会李光富会长
  5. 使用clipboard.js实现移动端页面一键复制功能 + 弹出复制成功提示
  6. 微信小游戏个人游戏发布,《自省自查报告》
  7. 操作系统学习笔记——北京大学陈向群老师课后及习题答案(5)
  8. (CNVD-2021-17391)|启明星辰-‘‘天清汉马USG防火墙‘‘逻辑漏洞
  9. u盘装红帽子6.5系统linux,红帽linux系统下载|红帽linux(RHEL) v6.5 beta 官方版 - 软件下载 - 绿茶软件园|33LC.com...
  10. Word中的通配符随意组合进行批量替换或删除某些内容