unity3d VR手柄射线拾取,投掷,发射可拿去的物体
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手柄射线拾取,投掷,发射可拿去的物体相关推荐
- Unity中使用VR手柄射线触发UI事件
创建射线检测,确定起点和终点 public class LineController : SingletonMono<LineController> {//属性[HideInInspect ...
- unity3D VR手柄模型替换
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...
- Htc Vive Sdk(OpenVR),Unity3d 开发,手柄射线
开发引擎:Unity3d 设备:Htc Vive Htc Vive Sdk(OpenVR),Unity3d 开发,Hello World Htc Vive Sdk(OpenVR),Unity3d 开发 ...
- 【虚拟现实】Unity3D+VR的实现
[虚拟现实]Unity3D+VR的实现 针对CardBoard一类的眼镜用Unity3D开发VR内容. 1.创建VRCamera: 使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本 ...
- SteamVR 2.x 手柄射线与3D物体交互(9)
UI模块在前面已经讲完了,从本章开始,会着重介绍手柄与3d游戏物体之间的交互,我们平时项目开发,最常用的就是手柄射线点击物体.手柄触碰以及手柄拾取物体,先来聊聊射线点击物体. 沿用的思想我们之前有说过 ...
- Pico UnityXR中的手柄射线
PicoXR中的手柄射线 前言 本文是继PicoXR中的输入事件博客的进一步补充,针对手柄的射线相关API进行解析,并以VR水果忍者为例子封装手柄射线的事件. 手柄射线的获取 XRRayInter ...
- UE4 射线拾取三维画线
虽然有人建议UE4使用C++创建VR项目,能避免一些坑爹的错误,但是我用C++创建,竟然问题更多,还存在创建不了的情况,也不知道是不是我的操作问题,快疯了. 于是我还是选择了蓝图创建VR项目,但是.. ...
- 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 ...
- Project Caliper:目标是打造最佳VR手柄
一提到Valve Index,人们很快联想到它的五指追踪VR手柄,这款支持手势追踪和体感反馈的高端VR手柄,是市面上最强大的C端VR手柄之一.尽管如此,它依然存在许多缺陷,比如配备的小型摇杆质量不佳. ...
最新文章
- Windows RT复活!Windows 10 Cloud首波截图曝光
- 文本分类与聚类(text categorization and clustering)
- 实战|QUIC协议助力腾讯业务提速30%
- 华硕服务器显示模块,华硕远程管理模块 ASMB4-iKVM 华硕服务器主板专用 现货 IPMI...
- JSK-16501 扫雷游戏【谜题】
- bzoj 1605: [Usaco2008 Open]Crisis on the Farm 牧场危机(DP)
- 5个强盗分100颗宝石 你该怎么分?
- TFS配置过程中的错误
- 拓端tecdat|matlab使用Copula仿真优化市场风险
- Linux下ls、vi命令失效的解决办法
- Python 项目打包各种依赖包
- python清理浏览器缓存_浏览器缓存看这一篇就够了
- 算一串数字的entropy_【一点资讯】数字的作用,远比我们想的多得多 www.yidianzixun.com...
- 深度 | 苹果略胜微软一筹,为什么说 ARKit 是 AR 的最好选择?
- JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)
- 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析
- 苹果股价盘后涨超5% 市值一度突破万亿
- 国际学术论文写作个人总结-引言(Introduction)部分
- 2018年中小学计算机培训,2018年中小学教师全员培训资料.doc
- python小白学习第三节
热门文章
- Qbao Network 一周项目进展(10.31 - 11.7)
- 自制python脚本,6小时获取上千台mysql数据库服务器
- # 2021-01-15 #「开源视频管理系统」- 搭建属于自己的视频站点
- 李帅将道访武当山,拜会李光富会长
- 使用clipboard.js实现移动端页面一键复制功能 + 弹出复制成功提示
- 微信小游戏个人游戏发布,《自省自查报告》
- 操作系统学习笔记——北京大学陈向群老师课后及习题答案(5)
- (CNVD-2021-17391)|启明星辰-‘‘天清汉马USG防火墙‘‘逻辑漏洞
- u盘装红帽子6.5系统linux,红帽linux系统下载|红帽linux(RHEL) v6.5 beta 官方版 - 软件下载 - 绿茶软件园|33LC.com...
- Word中的通配符随意组合进行批量替换或删除某些内容