正如我们在上一篇文章中成功创建了第一个针对 Quest 2 设备的 Unity 项目一样,现在我们将深入了解 Meta 通过 Presence Platform 提供的最强大的功能集之一。
呈现平台旨在在虚拟现实环境中营造共享呈现和互动的感觉。它使人们能够使用 VR 耳机在沉浸式虚拟空间中相互联系、互动和交流。
Meta 在线状态平台的特性和功能包括:
正如您所看到的,Presence Platform 是一套全面的子系统/功能,我将详细介绍它们中的每一个,但首先 - 让我们从手部跟踪开始,作为 VR 游戏开发的基本要求之一 - 我们将设置,构建并推出类似手部追踪游戏的体验。
一个完美的起点是 oculus-samples repo提供的Unity-FirstHand体验。
再次,请参考之前关于设置开发环境的文章,并确保安装了各种依赖项。
确保已安装 Git LFS,运行以下命令:
git lfs install
然后,使用“代码”克隆存储库,在 Github 桌面中打开并运行以下命令:
git clone https://github.com/oculus-samples/Unity-FirstHand.git
所有实际的项目文件都位于“资产”→“项目”中。此文件夹包含运行示例的所有脚本和资源,不包括 Interaction SDK 本身。该项目包括 Oculus SDK v41,其中包括 Interaction SDK。您可以在 [Assets/Oculus/Interaction]{Assets/Oculus/Interaction) 中找到 Interaction SDK。
安装所有必需的依赖项并配置构建以在 Quest 设备上运行后,您将在编辑器中获得与上述类似的内容。
如果您使用的是 Mac,请转至文件 → 构建设置。
如果您按照我上一篇文章中的说明连接了您的设备,那么您应该在“构建设置”中看到以下内容。
单击“构建并运行”,等待 Unity 几分钟的时间来构建并等待您的应用程序正在部署到连接的 Quest 设备的消息。
我强烈建议您尝试此示例并尝试自定义组件和脚本以了解其内部工作原理,以便能够转到 Unity 编辑器的“项目”部分并展开项目目录层次结构。
我们将定制 LazerProjectile:
public class LazerProjectile : ActiveStateObserver { [SerializeField] Transform _target; [SerializeField] GameObject _effect; [SerializeField] float _rayCastDelay = 0.5f; [SerializeField] float _fadeOutTime = 0.1f; [SerializeField] float _delayBetweenShots = 0.5f; [SerializeField] AudioTrigger _chargeUp; [SerializeField, Optional] AudioTrigger _chargeUpComplete; protected override void Update() { base.Update(); Vector3 endPos = Vector3.Lerp(_target.position, transform.position + transform.forward * 20, 5 * Time.deltaTime); _target.position = endPos; } //...... }
让我们增加光线投射延迟并通过替换来测试耳机上的应用程序
float _rayCastDelay = 0.1f;
到
float _rayCastDelay = 0.5f;
下面是它的工作原理!
亲自尝试一下,让我知道您想使用手部追踪来构建什么。