C# Unity 3D VR(5.6),如何使用GVR指针物理光线投射器检测对象?
我的Vr项目就像一个使用3d对象作为选择的测验,所以我已经做了一个工作点击事件,我使用GVR Pointer Physic Raycaster,但问题是我不知道如何使用GVR Pointer Physic Raycaster获得对象名C# Unity 3D VR(5.6),如何使用GVR指针物理光线投射器检测对象?,c#,unity3d,google-vr,C#,Unity3d,Google Vr,我的Vr项目就像一个使用3d对象作为选择的测验,所以我已经做了一个工作点击事件,我使用GVR Pointer Physic Raycaster,但问题是我不知道如何使用GVR Pointer Physic Raycaster获得对象名 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class spawn :
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);
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.EventSystems;
公共类繁殖:单行为{
//
布阿特兰多姆国际酒店;
int jumlahrandom=16;
int objek1;
int objek2;
int objek3;
int checkobjek;
int checkobjekawal;
字符串simpan1;
字符串simpan2;
字符串simpan3;
公开游戏对象target1;
公开游戏对象target2;
公开游戏对象target3;
公共int[]simpannomorobject;
公共游戏对象[]nomorasset;
公共浮子速度=10f;
公众浮标BEAT=1.0f;
私人杰拉克·科巴;
//用于初始化
无效开始(){
simpannomorobject=newint[3];
对于(int i=0;i<2;i++){
buatrandom=随机范围(0,jumlahrandom);
simpannomorobject[i]=布阿特兰多姆;
如果(i>0){
如果(i<3){
buatobjek();
}
}
}
}
void buatobjek(){
objek1=simpannomorobject[0];
objek2=simpannomorobject[1];
objek3=simpannomorobject[2];
simpan1=objek1.ToString();
simpan2=objek2.ToString();
simpan3=objek3.ToString();
target1=实例化(nomorasset[objek1],新向量3(0,0,3.0f),四元数.identity);
target2=实例化(nomorasset[objek2],新向量3(4.0f,0,0),四元数.Euler(0,90,0));
target3=实例化(nomorasset[objek3],新向量3(-4.0f,0,0),四元数.Euler(0,-90,0));
target1.AddComponent();
target2.AddComponent();
target3.AddComponent();
EventTrigger eventTrigger1=target1.AddComponent();
EventTrigger eventTrigger2=target2.AddComponent();
EventTrigger eventTrigger3=target3.AddComponent();
entry1=neweventtrigger.Entry();
entry2=neweventtrigger.Entry();
entry3=neweventtrigger.Entry();
entry1.eventID=EventTriggerType.PointerDown;
entry1.callback.AddListener((数据)=>{OnPointerDownDelegate((PointerEventData)数据);});
entry2.eventID=EventTriggerType.PointerDown;
entry2.callback.AddListener((数据)=>{OnPointerDownDelegate((PointerEventData)数据);});
entry3.eventID=EventTriggerType.PointerDown;
entry3.callback.AddListener((数据)=>{OnPointerDownDelegate((PointerEventData)数据);});
eventTrigger1.triggers.Add(entry1);
eventTrigger2.triggers.Add(entry2);
eventTrigger3.triggers.Add(entry3);
target1.AddComponent();
target2.AddComponent();
target3.AddComponent();
}
//每帧调用一次更新
无效更新(){
target1.transform.Rotate(0100*Time.deltaTime,0);
target2.transform.Rotate(0100*Time.deltaTime,0);
target3.transform.Rotate(0100*Time.deltaTime,0);
}
PointerDownDelegate上的公共无效(PointerEventData数据)
{
打印(data.enterEventCamera.gameObject.name);
}
}
您可以通过不进入EventCamera
获取PhysicaryMaster检测到的对象名称
public void OnPointerDownDelegate(PointerEventData data)
{
print(data.pointerCurrentRaycast.gameObject.name);
}
谢谢兄弟,程序员