正如我们在上一篇文章中成功创建了 一样,现在我们将深入了解 Meta 通过 Presence Platform 提供的最强大的功能集之一。 第一个针对 Quest 2 设备的 Unity 项目 Meta 的呈现平台是什么? 呈现平台 在虚拟现实环境中营造共享呈现和互动的感觉。它使人们能够使用 VR 耳机在沉浸式虚拟空间中相互联系、互动和交流。 旨在 Meta 在线状态平台的特性和功能包括: 呈现平台允许用户创建和定制他们的数字化身,在虚拟世界中代表他们。这些化身可以模仿用户现实生活中的动作、表情和手势,增强临场感和社交互动。 化身系统: 用户可以在共享虚拟环境中与朋友和其他人见面并互动。他们可以一起参与各种活动,例如玩游戏、参加虚拟活动、观看视频等。 社交互动: 该平台包含空间音频,这意味着虚拟环境中的声音是基于位置的。这创造了更加真实和身临其境的音频体验,因为用户可以听到来自特定方向的声音,就像在现实世界中一样。 空间音频: Presence平台支持手部追踪技术,使用户能够在VR中直接使用手和手指,无需控制器。这使得交互更加自然和直观。 手部追踪: 该平台旨在跨不同的 Oculus VR 耳机工作,允许使用不同设备的用户无缝加入并交互。 跨平台支持: 对于开发人员来说,Presence Platform 提供了用于创建和发布 VR 应用程序、游戏和体验的工具和 API,从而实现了蓬勃发展的虚拟内容生态系统。 内容创建工具: 从手部追踪开始 正如您所看到的,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; 下面是它的工作原理! 亲自尝试一下,让我知道您想使用手部追踪来构建什么。