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);
}
}
Thanks Bro,@Programmer –