2017-09-25 12 views
0

2つのグラブオブジェクトを一緒にアタッチしたいと思います。2つのグラブオブジェクト間のジョイントを作成しようとしています

このため、私はジョイントコンポーネントを追加できるように操作されているgameオブジェクトを知る必要があります。

私が現時点で持っている最大の問題は、グラブされているゲームオブジェクトに到達することです。

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に設定されている:check ゲームでオブジェクトを取得できます。 グラブされたオブジェクトの名前を取得できません。 "GetGrabbedObject"を含むWeb上のチュートリアルのコードを試してみたので、本当に私が探しているものなのか疑問に思っています... – wheric

答えて

0

これは機能します。

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; 
} 

}

関連する問題