返回 登录
0

面向虚拟现实更新旧版 Unity* 游戏

阅读3487

图片描述
许多开发人员利用面向 PC 和移动设备的 Unity* 游戏创建了卓越的任务和游戏。 现在,虚拟现实功能已经集成至 Unity 3D,我们需要了解如何更新旧版游戏,以提供出色的虚拟现实体验。本文将向开发人员介绍如何转换现有的 Unity 游戏,使其兼容 HTC Vive* 虚拟现实硬件。

目标虚拟现实类别: 高端虚拟现实
目标虚拟现实硬件: HTC Vive
目标 Unity 版本: Unity 5.0
本文将涵盖以下主题:

重新设计旧版游戏,以提供全新的虚拟现实体验
集成 SteamVR* 插件的技巧
开始使用控制器脚本
全新 C# 到旧版 JavaScript* 解决方案
从 2D 图形用户界面迁移至 3D 用户界面
设计全新的虚拟现实体验

虽然旧版 Unity 游戏并非专为虚拟现实而设计,但是由于 Unity 是一种模拟真实图形和物理的 3D 环境,很有可能您在改善虚拟现实体验方面已经取得了一定的进展。 添加控制器脚本前,您首先需要充分考虑旧版游戏和它所提供的全新的虚拟现实体验。 以下技巧可以帮助您设计适合旧版游戏的虚拟现实体验:

通过设计消除运动眩晕: 标准 Unity 游戏或应用的游戏体验非常令人难忘,但是无法欺骗您的感官, 认识这一点非常重要。 如果您创建了一款非常刺激的高速赛车游戏,然后将它移植到虚拟现实,用户的大脑将会接受非常混乱、错误的信号,最终引起用户的条件反射。 问题是当您的大脑看到虚拟现实世界中的第一人称运动时,它会向您的腿和驱干发送信号,以平衡眼前的运动。 某些用户可能很享受这种游戏体验,但对于大多数用户来说,这是一个非常糟糕的体验,尤其在用户直立时,有可能会摔倒。 如果他们坐着玩游戏,感知到的运动不会造成太大的问题,同时增强了安全性。 评估游戏的最佳体验,考虑建议坐式或站立的游戏体验,以及调整移动,避免用户在场景中遇到平衡问题。
图片描述
对于站立的玩家,消除运动眩晕的一个有效方法是取消全部的运动,添加远距传动特性,使游戏玩家在空间中随意转换。 借助远距传动特性,您可以以用户的身份站立,将各个方向的移动距离限制在几英尺以内,用户可以将控制器指向游戏中的某个空间,通过远距传动到达那个空间。 例如,如果 FPS 射击玩家借助远距传动特性进行远距离移动,虽然他们只能步行前进或后退几步,但是游戏效果却更好。

我的游戏示例最初设计为第一人称空间驾驶体验。 因此,我决定提供坐式体验,而非空间定位体验, 这样做将不会产生混乱的大脑信号,避免了用户维持双腿平衡的过程中出现双腿僵硬的现象,同时用户能够在场景中自由移动。 我还决定降低多数运动的幅度,使运动缓和了许多。 作为一款空间游戏,实施效果非常不错;在空间中漂浮时,不会因为转弯或运动而感到眩晕。 在坐式体验中,您仍可以感受到运动,但是运动更为可控,不会在大脑中产生杂乱的信号,也无需调整或适应运动。 (如欲进一步迁移至虚拟现实的原始游戏版本,请在查看 本文, 这是一篇利用超极本™ 创建 Unity 游戏的教程。)

面向第一人称设计: 虚拟现实面临的另一个主要问题是第一人称体验。 如果旧版游戏不是专为第一人称视角而设计,需要考虑如何使第三人称视角变为有趣的第一人称体验,或者如何将游戏转换为第一人称视角。

我的游戏属于混合第一人称游戏,但是包含镜头跟随动作的特性。 我认为它太被动,只是间接的第一人称体验。 因此,我决定将人物与动作直接锁定,而非通过脚本间接跟随。

自然交互式用户界面或控制。 由于摄像头的位置不固定,而典型的屏幕菜单在摄像头中显示,因此,交互式用户界面和控制是另一大问题。 摄像头的位置就是用户正在查看的区域。 务必妥善解决控制、菜单和自然交互性问题。 由于多数控制台控制位于游戏手柄,而非屏幕上,因此,控制台游戏开发人员优势非常明显。 如果您设计的移动游戏使用了触摸控制、复杂键或可用鼠标的屏幕控制,您需要重新思考您的控制方案

我的游戏包含了 4 个控制选项:左转、右转、前进和发射。 移动版游戏使用了屏幕可触控控制,PC 版游戏使用了按键命令。 对于虚拟现实版本,我开始借鉴坦克的控制进行设计: 左控制器顺时针旋转,右控制器逆时针旋转等。测试前,这一切似乎比较可行。 我很快发现我的左拇指想要控制两个旋转方向, 事实证明,我之前用游戏手柄玩游戏,无法克服这种肌肉记忆。 HTC Vive 控制器是手持的,手指可以自由放置(和手柄相似),因此,我进行了重新设计。 左控制手柄负责控制方向,右触发器为汽车提供燃料,利用右拇指发射激光,和手柄中的 A 或 X 按钮用法相似。

利用 360 度: 虚拟现实游戏提供 360 度全方位的视角,如果游戏只允许玩家只向前移动,是对虚拟现实优势的一种浪费。 实际上,这是常规版游戏所面临的问题。 我设计了面向所有敌人的迷你-HUD 显示模式,您可以查看敌人是否从两侧或后面靠近您的战舰。 利用虚拟现实技术,只需向左或向右扭头便能轻松观察周围环境。 我将专门针对前进视角以外的危险进行改进,以充分利用 360 度全方位的虚拟现实体验。

针对示例游戏的虚拟现实重新设计决策包含以下几个方面:

采用坐姿玩法,以避免眩晕和双腿抽搐的症状
禁用跟踪摄像头,将摄像头锁定车辆的前部
抑制旋转,以避免平衡问题,缓和游戏的移动
将控制映射到 HTC Vive 控制器中,该控制器与手柄控制的布局类似。
创建特性,在更广阔的全景中展示视图和动作
添加 SteamVR 插件

这既不是最简单的操作,也不是最严峻的挑战, 完全取决于代码的老旧程度以及它对 SteamVR 工具套件的兼容。 我将介绍它预期的工作方式以及可能需要您执行的操作。

清理您的游戏,以安装最新版 Unity: 首先,复制原始游戏。 下载最新版 Unity。 打开该版本的旧版游戏。 如有提示,更新 API。 打开游戏并检查控制台是否存在过时的 API,建议您进行更新。

安装 SteamVR 插件: 如果现代版 Unity 能够正常运行游戏,可以下载并导入 SteamVR 插件。 转至 Unity 商店。 搜索 SteamVR 插件, 请选择唯一一个带有熟悉的 Steam 标识的插件。 单击 Import。

选择 All 以导入全部特性、模型和脚本。 所有内容在 SteamVR 文件夹中有序地排列,便于您弄清哪些脚本和资产来自插件。

图片描述
测试示例场景: 转至下一步之前,确保 HTC Vive 硬件已经连接且正常运行。 在 Unity 中转至 Project 选项卡,打开 SteamVR 文件夹,选择 Scenes 文件夹,然后选择示例场景。 您将看到一个堆着箱子的场景和 SteamVR 截屏。 进入场景并带上头盔。 您应该看到全面的虚拟现实场景以及 HTC Vive 控制器。 如果您看到了上述场景和控制器,可以断定 SteamVR 插件正常运行。

如果没有 – 尝试创建新的项目: 如果您看不到控制器或 SteamVR 示例无法在头盔中加载,需要创建一个新的空白项目。 导入 SteamVR 工具套件并尝试示例场景。 如果这样仍不奏效,表示您的 Unity 版本或 Steam 硬件出现了问题。

新项目能够正常运行,但是旧项目无法正常运行: 如果全新项目运行良好,但是原始游戏无法兼容 SteamVR 插件,需要再次创建空白项目,安装 SteamVR 工具套件,测试套件是否正常运行,然后将您的游戏迁移至新项目。 为了完成上述操作,首先关闭项目。 在清理后的 Unity 项目中,复制 Assets 文件夹中的全部内容, 转至新项目中的 Asset 文件夹并粘帖。 打开 Unity 项目,开始测试虚拟现实。 这种方法被证实有效。 但是,您的游戏已被损坏, 许多资产的所有项目设置已经丢失,包括从项目组件到游戏资产(如模型、声音文件等)的链接。转至每个资产和每个组件,以确保游戏对象和声音文件正确链接。 这个过程费时费力, 我已经经历过两到三次。 也没有那么糟糕,但是非常琐碎。

更换摄像头: 进行下一步操作之前,请带上 HTC Vive 头盔并正常运行游戏,您应该能够通过转动头部来移动摄像头,还能环顾游戏场景。 但是您仍看不到 HTC Vive 控制器,将虚拟现实应用于摄像头的关键技术还未设置。 下面是实现集成的最关键步骤, 操作起来非常简单,让人难以相信。 为了在应用中添加虚拟现实特性,只需将场景中的主摄像机替换为 SteamVR 文件夹中的 Prefab 摄像头。 就这么简单! 但是,现有摄像头仍有大量的脚本或设置。 不要立即替换摄像头, 建议您以子对象的形式将 Prefab 摄像头放入现有摄像头。
图片描述
然后,在现有摄像头的…查看全文
了解更多相关内容,请关注CSDN英特尔开发专区

Intel技术双周刊已全面开启:订阅请点击这里

评论