c# - 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);
}
}
在游戏开始时,第一人称玩家处于活跃状态,而头顶玩家处于非活跃状态。当我使用这个脚本时,耳机会在两个摄像头之间切换。但是,游戏和控制器上的移动控件之间的连接在第一次切换后被切断。当我切换回地面时,我无法再使用控制器来移动我的玩家。
我如何在玩家之间切换并保持移动控制完好?
解决方案
这是因为您的场景中有超过 1 个 OVRManager,预制件 OVRCameraRig 已附加 1 个,因此如果您有多个此类预制件,例如 2 个播放器,Oculus 将无法正常工作。
将组件放在一个永远不会关闭的空预制件中,并在播放器控制器之间自由设置切换。
推荐阅读
- javascript - 在包含循环和 2 种不同显示方式的页面上使用 Pym.js
- azure-ad-b2c - How do I get the claim details from Azure B2C Angular app if I use MSAL 2.0 & PKCE
- tensorflow - How to make Federated Learning datasets 'tff.simulation.datasets.emnist' from LEAF and NIST?
- python - How do I implement proper inter process comunication in this system?
- time-series - Should I do statistical test in other time-series features to check stationary?
- performance - Parallel benchmarks on coda and map reduce function
- python - Django:特定的 unique_together 条件
- ios - 无法使用 cargo lipo --release 构建库
- javascript - Capybara 不选择没有 JavaScript 的单选按钮
- python - pypdf2命令将pdf转换为html失败并出现TypeError:write()参数必须是str,而不是字节,pdfminer,