2017-04-11 32 views
1

我的Vr項目就像使用3d對象作爲選擇的測驗,所以我已經做了一個工作點擊事件,並使用GVR指針Physic Raycaster即時通訊,但問題是我不知道如何使用GVR指針Physic Raycaster獲取對象名稱。Unity 3D VR(5.6),如何使用GVR指針Physic Raycaster檢測物體?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.EventSystems; 

public class spawn : MonoBehaviour { 

    // 
    int buatrandom; 
    int jumlahrandom = 16 ; 

    int objek1 ; 
    int objek2 ; 
    int objek3 ; 

    int checkobjek; 
    int checkobjekawal; 

    string simpan1; 
    string simpan2; 
    string simpan3; 

    public GameObject target1; 
    public GameObject target2; 
    public GameObject target3; 

    public int [] simpannomorobject ; 
    public GameObject[] nomorasset; 

    public float speed =10f; 
    public float berat = 1.0f; 

    private gerak coba; 
    // Use this for initialization 
    void Start() { 
     simpannomorobject = new int[3]; 
     for (int i = 0; i < 2; i++) { 
      buatrandom = Random.Range (0, jumlahrandom); 
      simpannomorobject [i] = buatrandom; 
      if (i > 0){ 
       if (i < 3) { 
        buatobjek(); 
       } 
      } 
     } 
    } 

    void buatobjek(){ 
     objek1 = simpannomorobject [0]; 
     objek2 = simpannomorobject [1]; 
     objek3 = simpannomorobject [2]; 

     simpan1 = objek1.ToString(); 
     simpan2 = objek2.ToString(); 
     simpan3 = objek3.ToString(); 

     target1 = Instantiate (nomorasset [objek1], new Vector3 (0, 0, 3.0f), Quaternion.identity); 
     target2 = Instantiate (nomorasset [objek2], new Vector3 (4.0f, 0, 0), Quaternion.Euler(0,90,0)); 
     target3 = Instantiate (nomorasset [objek3], new Vector3 (-4.0f, 0, 0), Quaternion.Euler(0,-90,0)); 

     target1.AddComponent<BoxCollider>(); 
     target2.AddComponent<BoxCollider>(); 
     target3.AddComponent<BoxCollider>(); 


     EventTrigger eventTrigger1 = target1.AddComponent<EventTrigger>(); 
     EventTrigger eventTrigger2 = target2.AddComponent<EventTrigger>(); 
     EventTrigger eventTrigger3 = target3.AddComponent<EventTrigger>(); 

     EventTrigger.Entry entry1 = new EventTrigger.Entry(); 
     EventTrigger.Entry entry2 = new EventTrigger.Entry(); 
     EventTrigger.Entry entry3 = new EventTrigger.Entry(); 

     entry1.eventID = EventTriggerType.PointerDown; 
     entry1.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); }); 

     entry2.eventID = EventTriggerType.PointerDown; 
     entry2.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); }); 

     entry3.eventID = EventTriggerType.PointerDown; 
     entry3.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); }); 

     eventTrigger1.triggers.Add (entry1); 
     eventTrigger2.triggers.Add (entry2); 
     eventTrigger3.triggers.Add (entry3); 

     target1.AddComponent<gerak>(); 
     target2.AddComponent<gerak>(); 
     target3.AddComponent<gerak>(); 


    } 

    // Update is called once per frame 
    void Update() { 

     target1.transform.Rotate(0,100* Time.deltaTime,0); 
     target2.transform.Rotate(0,100* Time.deltaTime,0); 
     target3.transform.Rotate(0,100* Time.deltaTime,0); 
    } 

    public void OnPointerDownDelegate(PointerEventData data) 
    { 
     print (data.enterEventCamera.gameObject.name); 
    } 
} 

回答

1

你可以通過PhysicRaycasterpointerCurrentRaycastenterEventCamera檢測對象的名稱。

public void OnPointerDownDelegate(PointerEventData data) 
{ 
    print(data.pointerCurrentRaycast.gameObject.name); 
} 
+1

Thanks Bro,@Programmer –