Телепорт не работает над квестом после обновления Oculus Unity Integration до v12 - PullRequest
0 голосов
/ 28 января 2020

Мой текущий стек:

  • Гарнитура: Oculus Quest
  • Unity: v2019.2.19f1
  • Интеграция с Oculus: v12
  • ОС: MacOs Catilina

Я следовал базовому c руководству по телепортации, и оно работало хорошо: я смог использовать левый большой палец для определения новой цели и ориентации телепортации аватара. Однако после обновления Oculus Integration для Unity до последней версии (v12) он перестал работать.

Это структура моего префаба LocalPlayerController:

enter image description here

, и это была предыдущая (рабочая) конфигурация объекта LocomotionController:

enter image description here

после обновления я заметил, что 2 Сценарии изменены: LocomotionController.cs и TeleportInputHandlerAvatarTouch.cs:

enter image description here

LocomotionController.cs

, если мы проанализируем Из этого скрипта подробнее можно заметить, что два поля (CharacterController и PlayerController) изменили тип.

/************************************************************************************

See SampleFramework license.txt for license terms.  Unless required by applicable law 
or agreed to in writing, the sample code is provided “AS IS” WITHOUT WARRANTIES OR 
CONDITIONS OF ANY KIND, either express or implied.  See the license for specific 
language governing permissions and limitations under the license.

************************************************************************************/

using System;
using UnityEngine;
using System.Collections;
using JetBrains.Annotations;
using UnityEngine.Assertions;
#if UNITY_EDITOR
using UnityEngine.SceneManagement;
#endif

/// <summary>
/// Simply aggregates accessors.
/// </summary>
public class LocomotionController : MonoBehaviour
{
    public OVRCameraRig CameraRig;
    //public CharacterController CharacterController;
    public CapsuleCollider CharacterController;
    //public OVRPlayerController PlayerController;
    public SimpleCapsuleWithStickMovement PlayerController;

    void Start()
    {
        /*
        if (CharacterController == null)
        {
            CharacterController = GetComponentInParent<CharacterController>();
        }
        Assert.IsNotNull(CharacterController);
        */
        //if (PlayerController == null)
        //{
            //PlayerController = GetComponentInParent<OVRPlayerController>();
        //}
        //Assert.IsNotNull(PlayerController);
        if(CameraRig == null)
        {
            CameraRig = FindObjectOfType<OVRCameraRig>();
        }
        Assert.IsNotNull(CameraRig);
#if UNITY_EDITOR
        OVRPlugin.SendEvent("locomotion_controller", (SceneManager.GetActiveScene().name == "Locomotion").ToString(), "sample_framework");
#endif
    }
}

Я использовал эти поля, просто перетаскивая префаб LocalPlayerController в поля редактора единиц, но теперь это невозможно. Не уверен, где я должен выбрать это CapsuleCollider и SimpleCapsuleWithStickMovement. Если я коснусь левой ручки, мой игрок перемещается, что не является предполагаемым поведением, и я не знаю, как его изменить.

TeleportInputHandlerAvatarTouch.cs

This Сценарий просто добавить два новых поля были добавлены (я думаю, для новой системы отслеживания рук), но я не думаю, что это создает проблемы с текущей конфигурацией.

Я полностью застрял и не знаю, как поступить Вот. Другие сценарии, по-видимому, не обновлялись с последним обновлением, и все мои исследования не увенчались успехом.

Ответы [ 2 ]

1 голос
/ 28 января 2020

Исследования привели меня к этому сообщению reddit , оплакивающему ту же проблему, но в их случае они, кажется, просто добавили два компонента к PlayerController: CapsuleCollider и SimpleCapsuleWithStickMovement. Оба должны появиться в вашем текущем проекте, если вы ищете компоненты для добавления в PlayerController. Тогда вы, очевидно, можете просто отключить эти компоненты, и ваша игра должна воспроизводиться без ошибок, хотя вопрос в том, какое поведение вам нужно, - это другой вопрос.

0 голосов
/ 29 января 2020

После почти трех дней и бесконечного количества экспериментов я нашел конфигурацию, которая заставляет телепорт работать с интеграцией Oculus Unity v12 для Oculus Quest .

1. Настройка для PlayerController

Это структура объекта контроллера проигрывателя:

enter image description here

вам необходимо отключить CharacterController и OVRPlayerController

enter image description here

. Это повторно активирует телепортный лазер, но, вероятно, не будет работать со всеми поверхностями. Чтобы решить эту проблему, нам нужен дополнительный шаг ...

2. Настройка для LocomotionController

Похоже, была введена ошибка , которая препятствует правильному обнаружению столкновений, когда Aim Collision Type установлен на Point. Чтобы заставить его работать, мы должны установить его на Sphere и дать любой относительно небольшой Радиус / Высота (в данном случае 0,1)

enter image description here

... это помогло мне.

Надеюсь, это поможет!

...