Unity 使用VRTK获取射线检测碰触的物体信息

steam VR 版本:SteamVR plugin for Unity - v1.2.3
VRTK版本:VRTK - Virtual Reality Toolkit - [ VR Toolkit ]3.3.0

检测三维物体

1、创建脚本,并获取VRTK_Pointer的引用
2、注册DestinationMarkerEnter方法

VRTK_Pointer vrtk_point;
 void Start()
    {
        vrtk_point = this.gameObject.GetComponent<VRTK_Pointer>();
        vrtk_point.DestinationMarkerEnter += enter; 
    }
    private void enter(object sender, DestinationMarkerEventArgs e)
    {
        Debug.Log("当前碰触:"+e.target);
        Debug.Log("当前碰触:" + e.raycastHit.collider.gameObject.name);
    }
    void DisEnble() {
        vrtk_point.DestinationMarkerEnter -= enter;
    }

检测UGUI组件物体

1、创建脚本,并获取VRTK_UIPointer引用
2、注册UIPointerElementEnter方法(我这里也注册了UI点击事件的方法UIPointerElementClick)

 VRTK_UIPointer vrtk_uiPoint;
   void Start()
    {
        vrtk_uiPoint= this.gameObject.GetComponent<VRTK_UIPointer>();
        vrtk_uiPoint.UIPointerElementClick += Vrtk_uiPoint_UIPointerElementClick;
        vrtk_uiPoint.UIPointerElementEnter += Vrtk_uiPoint_UIPointerElementEnter;
    }
    private void Vrtk_uiPoint_UIPointerElementEnter(object sender, UIPointerEventArgs e)
    {    
         Debug.Log("碰触到UI" + e.currentTarget);        
    }
     private void Vrtk_uiPoint_UIPointerElementClick(object sender, UIPointerEventArgs e)
    {
         Debug.Log("当前点击UI物体:"+e.raycastResult.gameObject); 
    }
    void DisEnble() {
        vrtk_uiPoint.UIPointerElementClick -= Vrtk_uiPoint_UIPointerElementClick;
        vrtk_uiPoint.UIPointerElementEnter -= Vrtk_uiPoint_UIPointerElementEnter;

    }
    

版权声明:本文为wks310原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。