unity3d VR手柄射线拾取,投掷,发射可拿去的物体
来源:互联网 发布:yandex优化怎么做 编辑:程序博客网 时间:2024/05/02 04:44
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"; //增加标签 这个标签设定的是可以拾取的物体 }}
4 0
- unity3d VR手柄射线拾取,投掷,发射可拿去的物体
- VR开发中HTC手柄发射射线的控制
- unity3D VR开发 手柄射线的事件回调增加
- HTC_VRTK_手柄发射射线获取碰撞物体信息
- vr发射拾取
- Unity3d 发射射线Ray
- Unity3D-VR手柄控制器的实现
- 通过射线求交实现物体的拾取
- OpenGL: 通过射线求交实现物体的拾取
- HTC Vive 手柄发射射线功能
- Unity学习——Transform组件的使用(坐标系)、物体拾取投掷
- UE4的射线拾取
- unity3D VR手柄模型替换
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- Unity3d射线的原理用法以及一个利用射线实现简单拾取的小例子
- opencv:HSV颜色模型
- 【Intellij IDEA】eclipse项目导入
- Unity切换场景淡入淡出效果
- 厉害了我的哥
- 嵌入式Linux驱动——SPI子系统解读(三)
- unity3d VR手柄射线拾取,投掷,发射可拿去的物体
- 阿里云服务器如何设置IPV6通过IOS/Appstore的审核
- Easy-10
- 几种常见的编码格式
- Android-网络框架04Retrofit2.0+RxJava
- 《java设计模式》之装饰者设计模式
- HTML5微数据初识
- Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn
- Android dex文件64k限制解决办法