Unity是由Unity Technologies开发的一个让玩家轻松创建诸如
三维
视频游戏、建筑可视化、实时
三维动画
等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业
游戏引擎
。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化
开发环境
为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至
Windows
、
Mac
、
Wii
、
iPhone
、
WebGL
(需要
HTML5
)、Windows phone 8和Android平台。也可以利用Unity web player
插件
发布网页游戏,支持Mac和Windows的网页浏览。它的
网页播放器
也被Mac 所支持。网页游戏
坦克英雄
和手机游戏
王者荣耀
都是基于它的开发。感兴趣的看下面几篇文章。
1. Unity强化篇(一) —— 如何使用Vuforia制作AR游戏(一)
首先看下写作环境
C#4, Unity 2018.2, Unity
HTC Vive
是由
HTC
和
Valve Corporation
开发的虚拟现实
headset
。它可以让您进入虚拟世界并亲身体验它,而不是通过屏幕上的头像。
如果您是Unity开发人员,将
HTC Vive
虚拟现实游戏制作成您自己的游戏很容易 - 您甚至可以说
HTC Vive
和
Unity
是天作之合。
在本HTC Vive教程中,您将学习如何将
HTC Vive
集成到您自己的Unity游戏中。具体来说,您将学习如何:
下载并配置
SteamVR
。
处理控制器的输入。
在VR中与物理对象交互。
制作激光笔。
传送一个区域。
在本
HTC Vive
教程的最后,您将拥有一个沙盒,可以进行进一步的实验。现在是时候开始吧!
注意:戴头戴式显示器时,每个人对移动和旋转的反应都不同。如果这是你的第一次,请自己动手,如果你感到恶心或不舒服,请休息一下。大多数人都习惯了VR。如果你在前几次感觉不舒服,不要担心 - 它可能会过去。
在深入学习本教程之前,请确保您具有以下内容:
支持VR的
Windows PC
。
您机器上安装的
copy of Unity 2018.2.14
或更新版本的副本。
安装了所有硬件并配置和更新软件的
HTC Vive or HTC Vive Pro
。
已安装
Steam
和
SteamVR
。 请参阅本指南
this guide
,该指南将指导您完成硬件设置并提供下载Steam和SteamVR的链接。
基本的Unity知识。
对脚本的基本了解。
打开并连接的
HTC Vive
。
在Unity中打开准备好的
starter
文件夹。 在
Project
窗口中查看
RW
的内容:
Setting Up SteamVR
SteamVR SDK
是
Valve
制作的官方库,可以更轻松地为所有主要的VR headsets开发。 它目前在资源商店免费,并支持
Oculus Rift
和
HTC Vive
等等。
在顶部栏中选择
Window> General> Asset Store
打开
Asset Store
:
这是SteamVR插件的一部分;它显示了您可以改进的编辑器设置,以最大限度地提高性能和兼容性。
当您打开一个新项目并导入
SteamVR
时,您会看到很多条目。 由于入门项目已经过很好的优化,因此这里唯一的建议是禁用解析对话框。
单击
Accept All
以执行所有建议的更改。 关闭
Asset Store
并切换回
Scene
视图。 您现在将在
Project
窗口中有一个名为
SteamVR
的新文件夹:
Camera
与头戴式显示器相连,可精确跟踪每个现实生活中的移动和旋转。
现在,将头戴式显示器放在头上,抓住控制器,然后环顾四周,感受一下房间。
如果您尝试与对象进行交互,您会感到失望,因为没有任何反应。 要添加移动跟踪之外的功能,您需要执行一些脚本编写。
Handling Input
拿一个手中的控制器,给它一个合适的外观。 每个控制器都有以下输入:
除了上面的输入,每个控制器在移动和旋转时也具有速度和旋转速度;这在与物理对象交互时证明特别方便。
1. Defining Actions
从
SteamVR 2.0
版开始,
Valve
已经用输入系统取代了输入系统的传统
1:1
硬件映射。 这在硬件和Unity之间增加了一层抽象。
操作系统允许您考虑用户操作,而不是需要轮询哪些按钮或触发器进行输入。
SteamVR
计算出用于给定操作的输入。
通过在顶部菜单中选择
Window> SteamVR Input
打开
SteamVR Input
窗口。
1)
The action sets
:此处的按钮就像选项卡一样在各set之间切换。
2)
Actions
:默认的操作集,包括输入和输出。您可以在此处添加,编辑和删除操作。
3) 此按钮将所有操作集和操作保存到JSON,并生成许多帮助程序类,以便轻松访问操作。
4) 该按钮打开一个本地托管的Web页面,允许您将操作绑定到硬件。
您可以在此处定义多个
actions sets
,每个操作集都包含一系列操作。您可以将每个输入操作分类为以下类型之一:
Boolean
:打开或关闭true或false的操作。使用示例:抓住。
Single / Vector1
:值介于0和1之间的操作。示例用法:移动速度。
Vector2
:X和Y值介于0和1之间的动作。示例用法:方向。
Vector3
:X,Y和Z值介于0和1之间的动作。这些动作非常罕见。
Pose
:表示3D空间中位置和旋转的动作。这些操作用于跟踪
VR
控制器和
HMD
。
Skeleton
:使用
SteamVR Skeleton Input
系统估算拿着VR控制器时玩家手指的位置的动作。无论控制器的跟踪保真度如何,这都为每个手指提供关节位置和旋转。
最后,还有一个输出动作:振动
(vibration)
。您可以使用此操作使控制器振动。
是时候编辑动作了!
单击
platformer
按钮和
mirrored
下拉列表旁边的减号按钮以删除
platformer
操作集:
绑定编辑器现在显示在屏幕上。 快速浏览一下。 您可以在此处将操作可视地绑定到硬件。
由于镜像,您只需要设置左控制器,这些设置将复制到另一侧。 您可以通过取消选中屏幕底部的
Mirror Mode
复选框来更改此设置。 尽管如此,为了本教程而保留镜像。
如果您查看屏幕左侧并向下滚动,您会注意到已经有一些输入链接到操作:
现在对
Trigger
和
Trackpad
执行相同的操作:为每个触发器创建一个新的
Button
输入,将
Trigger
的
Click
事件链接到
Trackport
并将
Trackpad
的
Click
事件链接到
Teleport
。 完成后一定要保存这些。
结果如下:
在下一个窗口中,单击左下角的
Save
以将默认绑定保存到磁盘。
当玩家开始游戏时,会应用此绑定。 如果玩家的特定硬件没有绑定,则会提示他们自己设置这些绑定。
关闭
Binding UI
选项卡或窗口,返回Unity编辑器并关闭
SteamVR Input
窗口。 是时候把这个绑定好用了!
3. Using Actions
通过创建并绑定到硬件输入的操作,您现在可以在游戏中最终使用这些操作!
首先选择控制器的
Pose Actions
;这将物理控制器的位置和旋转链接到虚拟控制器。
展开
Hierarchy
中的
[CameraRig]
并选择
Controller (left)
。
现在对
Controller (right)
执行相同操作,但将其
Pose Action
更改为
\actions\default\in\SkeletonRightHan
。
接下来,在
RW \ Scripts
中创建一个新的C#脚本,将其命名为
ActionsTest
并在您喜欢的代码编辑器中打开它。
删除
Start()
方法并将以下内容添加到文件的顶部:
using Valve.VR;
这引用了访问VR输入类所需的命名空间。
接下来,在Update()
上面添加以下内容:
public SteamVR_Input_Sources handType; // 1
public SteamVR_Action_Boolean teleportAction; // 2
public SteamVR_Action_Boolean grabAction; // 3
使用此代码,您做了:
1) 轮询输入的手的类型。 这些是All, Left or Right
。
2) 引用Teleport
动作。
3) 引用Grab
行动。
现在,在Update()
下面添加以下方法:
public bool GetTeleportDown() // 1
return teleportAction.GetStateDown(handType);
public bool GetGrab() // 2
return grabAction.GetState(handType);
以下是这些内容:
1) 如果Teleport
操作刚刚激活则进行轮询,如果是这种情况则返回true
。
2) 如果Grab
操作当前已激活,则轮询。
最后,将以下if语句添加到Update()
:
if (GetTeleportDown())
print("Teleport " + handType);
if (GetGrab())
print("Grab " + handType);
这些语句检查您创建的方法,并在返回true时将消息打印到控制台。
你准备测试sript
了。 保存并返回Unity编辑器。
选择两个Controller GameObjects
并通过单击Add Component
,键入“Act”
并选择top选项,为两者添加Actions Test
组件。