seo整站优化方法,深圳专业网站排名公司,外国设计网站推荐,网站竞价推广哪个好VRTK射线检测回调事件 本人在工作中做VR隐患排查项目开发的时候#xff0c;有个功能需要做到#xff1a;按下手柄触摸板发送射线#xff0c;松开触摸板的时候处理射线最后检测到的那个游戏物体。 功能构思#xff1a;1、按下触摸板#xff0c;从手柄上发射射线#xff1b…VRTK射线检测回调事件 本人在工作中做VR隐患排查项目开发的时候有个功能需要做到按下手柄触摸板发送射线松开触摸板的时候处理射线最后检测到的那个游戏物体。 功能构思1、按下触摸板从手柄上发射射线 2、当射线停留在某个游戏物体上时将此游戏物体添加到List列表中 3、当射线移开此物体停留在下一个游戏物体时移除List列表中刚刚检测到的游戏物体由于射线是一直检测的所以当你不停的移动射线时会不停的添加和移除射线检测到的游戏物体 4、当射线停留在你想处理的某游戏物体上时此时游戏物体添加到List列表中松开触摸板此时可以对此游戏物体进行一系列逻辑处理 5、逻辑处理完成后会执行移除List列表中的游戏物体以便于下次使用射线检测。 获取射线碰撞到的某个物体这一类功能。可以通过VRTK里面的事件回调获取。 想使用VRTK射线检测首先需要打开unity导入SteamVR SDK和VRTK插件在此不做演示。 在VRTK的脚本中有VRTK_ControllerPointerEvents_ListenerExample和VRTK_DestinationMarker两个脚本。 下面贴上本人代码以供参考 public class Test()
{private VRTK_Pointer rightHandPointer;//右手柄Pointer组件private ListGameObject lists new ListGameObject();//创建列表void Start(){rightHandPointerVRTK_DeviceFinder.GetControllerRightHand().GetComponentVRTK_Pointer();//获取右手柄的VRTK_Pointer组件//rightHandPointer.GetComponentVRTK_DestinationMarker().DestinationMarkerEnter Test_DestinationMarkerEnter;//当射线进入的时候rightHandPointer.GetComponentVRTK_DestinationMarker().DestinationMarkerExit Test_DestinationMarkerExit;//当射线离开的时候rightHandPointer.GetComponentVRTK_DestinationMarker().DestinationMarkerHover Test_DestinationMarkerHover;//当射线停留的时候//rightHandPointer.GetComponentVRTK_DestinationMarker().DestinationMarkerSet Test_DestinationMarkerSet;//当目标标记在场景中活动时发出以确定最后的目的地位置用于选择和传送}//处理 射线停留在游戏物体上private void Test_DestinationMarkerHover(object sender, DestinationMarkerEventArgs e){if (e.target ! null)//当射线检测到游戏物体时添加到列表中lists.Add(e.target.gameObject);Debug.Log(获取射线检测到的游戏物体的名字e.target.name);}//处理 射线移开游戏物体时private void Test_DestinationMarkerExit(object sender, DestinationMarkerEventArgs e){//这段话意思是当SelectionButton不再按下的时候表示选中此游戏物体if (!rightHandPointer.IsSelectionButtonPressed()){//处理选中的游戏物体Debug.Log(获取射线检测到的游戏物体的名字e.target.name);}//当射线离开游戏物体时移出列表lists.Remove(e.target.gameObject);}
} 转载于:https://www.cnblogs.com/yzx885059439/p/10869150.html