Unity3D培训
美国上市Unity3D培训机构

400-111-8989

热门课程

Unity3D教程之头盔式HUD和十字光标

  • 发布:Unity3D培训
  • 来源:Unity3D教程
  • 时间:2017-05-22 13:29

1头盔式HUD

平视显示或是hud,是一块,在你的视野中,覆盖游戏场景的浮动画布。在vr中,有两种类型的hud。

我叫它们头盔式HUD(visor HUD)和挡风玻离类HUD(windshield HUD),这一节,我们先看看第一种。

在头盔式HUD中,UI画面是挂在相机上的。它不会对你的头部动作做出反应。

当你移动你的头,它会跟随你的脸部。我们来找一个比较好的方法可视化它。假设你戴了一个面罩式的头盔,UI就在这个面罩的表面。

可能这在VR中是可行的,但它可能会打破沉侵感。所以,这种UI通常只能是游戏玩法的一部分,或者是用在你需要离开场景时候,例如,硬件或系统的菜单。

让我们用以下几步来做一个欢迎界面的头盔式HUD,再来感受一下。

1.在Hierarchy界面,点开MeMyselfEye,向下找到Main Camera对象(Oculus,定位到MeMyselfEye的根目录下,Cardboard,你需要深入到 CardboardMain/Head/ )

2. Project面板,拖拽DefaultCanvas到相机物体下,让它成为相机的子对象。

3. 在Hierarchy面板,选中画布,重命名为VisorCanvas

4. 在Inspector面板中,修改画布的Rect Transform组件,Pos X, Pos Y, Pos Z 分别为 (0, 0, 1)

5. 展开VisorCanvas,选中子物体Text

6. 在Inspector面板中,修改默认Text为“Welcome! My reality is you reality”(你可在Input text输入回车)

7. 把字体的颜色修改得亮一些,例如绿色。

8. 图片对象禁用(Disable),只留下TEXT。在Inspector面板上,取消Enable的选择框选中。

9. 保存场景,在VR中试一试。

下面是有VisorCanvas组件的Rift上的屏幕截图:

Unity3D教程之头盔式HUD和十字光标

在VR中,当你移动你的头,这些文字也会跟随,就好像在你面前附戴了一个头盔。

现在,可以禁用VisorCanvas了,或者删除它(在Hierarchy面板上,选中它右键,点击 Delete),在下个话题中,我们展示另一种呈现欢迎信息的方式。下一步,我们将看到这种技术的不同应用。

2十字光标

另一种头盔式HUD是第一人称射击游戏不可缺少的,就是十字线或是十字光标。跟你用枪或是目镜瞄准 有一点类似(注意,它不是一个头盔),你的动作和枪或是炮塔的动作是一致的。可以用一个普通的对象实现这个(例如,Quad + 纹理图片),这章是关于UI的,所以,我们使用画面,步骤如下:

1. 在Hierarchy面板中找到Main Camera。

2. Project面板中,拖拽DefaultCanvas到相机物体上,让它变成相机子的子物体,命名为ReticleCursor。

3. 设置Rect Transform 的 Pos X, Pos Y, Pos Z 为 (0, 0, 1)

4. 删掉Image和Text对象

5. 通过菜单 GameObject | UI | Raw 加一个 Raw Image,让它成为ReticleCursor了子对象。

6.把Raw Image的Rect Transform的Pos X, Pos Y, Pos Z 设为 (0, 0, 0),Width, Height 为 (22, 22),在Raw Image (Script)属性中,选择一个醒目的颜色,例如红色

7.保存,运行它。

如果你不喜欢十字线,在Raw Image (Script)属性中,可以在Texture属性中填充一个鼠标图片。例如,点击Texturen属性稍远点的小圆圈图标。这会打开选择纹理对话框。找到一个合适的,例如 Crosshair 图片(Crosshair的一个副本包括在本书中附带文件中),一定要修改宽度和高度(Crosshair就是22*22的),描点设为middle-center。

Pos Z设为1.0的时候,十字浮动在你前面大约1米的距离。大部分UI情况,有一个固定距离的光标比较好。例如,如果你在一个平面面布上挑选东西,也是一个固定的距离,光标就很合适。

然后,这个世界是三维的。如果有物体在你和这个十字线之间,十字就会混淆。

同理,如果你如果看一个更远的物体,你需要重新聚焦,同时还需要麻烦地查看光标。

这里有一个简单的实现版本:

1. 选中ReticleCursor,菜单Add Component | New Script增加一个脚本,命名为 CursorPositioner,点击 Create and Add。

2. 在名字上双击,就可以用MonoDevelop打开脚本:

CursorPositioner脚本如下:

Unity3D教程之头盔式HUD和十字光标

在脚本中,组件的Z位置可通过 transform.localPosition 找到。如果比给定的Z数据要小,脚本把它修正为his.distance。现在,你可以移动十字到一个更好的位置,例如 Pos Z = 2

我们实现了自己以十字光标,但很多VR SDK提供游标(Oculus Rift,参见 OVRCrosshair.cs, Cardboard参见 GazeInputModule.cs),他们有可能包括了距离大小的补偿,也可能没有。

译注:这个脚本的原理就是放出一条射线,看看相机有没有阻挡,如果有,就把光标的Z修改到阻挡位的Z轴上,这样阻挡不论离相机多近,都不会挡住游标的绘制。

本文章由unty3d培训班的小编转载自网络感谢你的关注,如有侵权请联系我们

预约申请免费试听课

上一篇:Unity教程之三消游戏算法
下一篇:Unity中如何使用Raymarching实现惊艳的图形效果
选择城市和中心
贵州省

广西省

海南省