unity开发VR中,steamVR的脚本很方便,SteamVR_LaserPointer放在CameraRig下controller上,就是实现在HTC VIVI手柄上发射射线,当然还要加上SteamVR_TrackedController这个组件。
但是射线开启之后,尝试了取消这个脚本也没实现关闭射线。然后就开始看这个脚本,找到改的方法了。具体如下:
加上一个控制手柄的脚本,在控制手柄的按键脚本里加上
if(laserOpenCount==0)
{
GetComponent<SteamVR_LaserPointer>().enabled = true; //射线开启
laserOpenCount = 1;
}
else
{
GetComponent<SteamVR_LaserPointer>().enabled =false; //射线关闭
laserOpenCount = 0;
GetComponent<SteamVR_LaserPointer>().pointer.transform.localScale = new
Vector3(0, 0, 0);
}
laserOpenCount是一个计数器,判断是按下是开还是关。这里主要是为了改SteamVR_LaserPointer脚本里的localScale,这个值是关于射线的厚度和长度。先把脚本关闭,再把射线localScale即可关闭,然后再开启射线,则SteamVR_LaserPointer里面的update函数,会把 new Vector3(0, 0, 0) 覆盖掉,这样就能实现功能。
版权声明:本文为博主原创文章,未经博主允许不得转载