首页 > 解决方案 > Unity 2019.2.4f1中OVRPlayerController之间的切换

问题描述

版本:Unity v2019.2.4f1、Oculus Utilities v1.41.0、OVRPlugin v1.41.0、SDK v1.42.0

我正在创建一个 Oculus Rift 游戏,玩家可以使用按钮在地面上四处走动和鸟瞰环境之间切换。为此,我使用以下脚本在两个不同的 OVRPlayerControllers 之间切换,一个位于地面上,一个位于空中向下看:

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

public class CameraSwitcher : MonoBehaviour

{
    public GameObject firstPersonCameraPrefab;
    public GameObject overheadCameraPrefab;

    void Update()
    {

        bool isDownOne = false;
        bool isDownThree = false;

        isDownOne = OVRInput.GetDown(OVRInput.Button.One);
        isDownThree = OVRInput.GetDown(OVRInput.Button.Three);


        if (isDownOne || isDownThree)
        {
            switchCam();
        }

    }

    public void switchCam()
    {

        overheadCameraPrefab.SetActive(!overheadCameraPrefab.activeInHierarchy);
        firstPersonCameraPrefab.SetActive(!firstPersonCameraPrefab.activeInHierarchy);

    }
}

在游戏开始时,第一人称玩家处于活跃状态,而头顶玩家处于非活跃状态。当我使用这个脚本时,耳机会在两个摄像头之间切换。但是,游戏和控制器上的移动控件之间的连接在第一次切换后被切断。当我切换回地面时,我无法再使用控制器来移动我的玩家。

我如何在玩家之间切换并保持移动控制完好?

标签: c#virtual-realityoculus

解决方案


这是因为您的场景中有超过 1 个 OVRManager,预制件 OVRCameraRig 已附加 1 个,因此如果您有多个此类预制件,例如 2 个播放器,Oculus 将无法正常工作。

将组件放在一个永远不会关闭的空预制件中,并在播放器控制器之间自由设置切换。


推荐阅读