Как отключить и включить телепортацию oculus (Unity)? - PullRequest
0 голосов
/ 02 ноября 2018

Хорошо, моя проблема в том, что сенсорные панели oculus используют те же элементы управления рукояткой для определения телепортации / прицеливания и захвата объектов. Я не хочу менять элементы управления, потому что они интуитивно понятны, но у меня не может быть случайной телепортации, как это происходит сейчас, когда они поднимают объект.

В стандартном классе Locomotion Teleport класса Oculus нет функции отключения, и я попытался отключить ее следующим образом:

private void Update()
    {

        locomotionTeleport = GameObject.FindObjectOfType<LocomotionTeleport>();
        // print(GameObject.FindObjectsOfType<OVRGrabber>()[0].isGrabbing || GameObject.FindObjectsOfType<OVRGrabber>()[1].isGrabbing);
        locomotionTeleport.enabled = !(GameObject.FindObjectsOfType<OVRGrabber>()[0].isGrabbing || GameObject.FindObjectsOfType<OVRGrabber>()[1].isGrabbing);
    }

Где я отслеживаю, захватывает ли объект в OVRGrabbers:

void OnTriggerEnter(Collider otherCollider)
    {
        // Get the grab trigger
        OVRGrabbable grabbable = otherCollider.GetComponent<OVRGrabbable>() ?? otherCollider.GetComponentInParent<OVRGrabbable>();
        if (grabbable == null) return;

        if(grabbable != null)
        {
            isGrabbing = true;

        }

Но это ничего не делает. Ничто из того, что я пытаюсь установить флаги bool в классе телепортации ничего не делает Как я могу предотвратить телепортацию, если объект забирают, а затем снова включают?

...