一
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 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"; //增加标签 这个标签设定的是可以拾取的物体 } }
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁