2017-09-25 84 views
0

我想将两个抓取的对象连接在一起。试图在两个抓取的对象之间创建联合

为此,我需要知道被操纵的gameobjects,所以我可以添加一个联合组件。

我目前遇到的最大问题是遇到正在被抓取的gameobjects。

我试过使用GetGrabbedObject()但我只得到“null”。

从我有限的了解:

private GameObject ControllerL 

ControllerL = VRTK_DeviceFinder.GetControllerLeftHand(); // this should get me the left hand 

GameObject GO; 

GO = ControllerL.GetComponent<VRTK_InteractGrab>().GetGrabbedObject(); // this should get me the gameobject Grabbed by the left hand 

别的我失踪?

+0

你见过所有的这里列出的要求:[https://vrtoolkit.readme.io/docs/vrtk_interactgrab](https://vrtoolkit.readme.io/docs/vrtk_interactgrab ) – lockstock

+0

VRTK_ControllerEvents控制器上:检查 VRTK_InteractTouch控制器上:检查 可交互对象有isGrabbable设置为true:检查 我能抢在游戏中的目标没有问题。 我只是无法获取抓取对象的名称。试用了一些包含“GetGrabbedObject”的教程中的代码,因此我开始怀疑它是否真的是我正在寻找的东西...... – wheric

回答

0

This Works。

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using VRTK; 

public class JoinObjects : MonoBehaviour { 

public GameObject GO1, GO2; 
public GameObject ControllerL; 
public GameObject ControllerR; 
public GameObject GO; 


// Use this for initialization 
void Start() 
{ 
    GetComponent<VRTK_InteractableObject>().InteractableObjectGrabbed += new InteractableObjectEventHandler(ObjectGrabbed); 
    GetComponent<VRTK_InteractGrab>().GetGrabbedObject(); 
} 

private void ObjectGrabbed(object sender, InteractableObjectEventArgs e) 
{ 
    Debug.Log("Im Grabbed"); 
} 

public void Click() 
{ 
    Debug.Log("pouet"); 

    ControllerL = VRTK_DeviceFinder.GetControllerLeftHand(); 
    ControllerR = VRTK_DeviceFinder.GetControllerRightHand(); 

    GO1 = ControllerL.GetComponent<VRTK_InteractGrab>().GetGrabbedObject(); 
    GO2 = ControllerR.GetComponent<VRTK_InteractGrab>().GetGrabbedObject(); 

    if (GO1 != null) 
    { 
     Debug.Log(GO1.name); 
    } 

    if (GO2 != null) 
    { 
     Debug.Log(GO2.name); 
    } 

    ConfigurableJoint CJoint; 
    CJoint = GO1.AddComponent<ConfigurableJoint>(); 
    CJoint.connectedBody = GO2.GetComponent<Rigidbody>(); 
    //CJoint.angularXMotion = ConfigurableJointMotion.Locked; 
    //CJoint.angularYMotion = ConfigurableJointMotion.Locked; 
    //CJoint.angularZMotion = ConfigurableJointMotion.Locked; 
    CJoint.xMotion = ConfigurableJointMotion.Locked; 
    CJoint.yMotion = ConfigurableJointMotion.Locked; 
    CJoint.zMotion = ConfigurableJointMotion.Locked; 
} 

}