教你如何开发VR游戏系列教程五:UI 交互

原创 2015年11月19日 22:04:44

原文链接:欢迎关注AR学院


上一篇介绍了ugui/NGUI/以及普通3D模型的UI设计。这一讲主要介绍怎么样利用这些UI做交互。 


大家在VR游戏看到的UI以及UI交互,主要有哪几种? 

1、头控悬停(视选) 
2、蓝牙手柄 
3、利用AR技术 

 


1、触摸控制
在UGUI中,按钮的的事件容易处理,直接这里设置对应的方法。

那么有时候有的同学需要使用Image怎么办?这里就以Image的选择为例。
首先创建Canvas和Image,并选择一个Sprite。

 
然后给Image添加脚本Event Trigger.

再添加新的Event Type。这里我选择使用鼠标的Pointer Click.

 
 
 
最后新建一个脚本,Control.cs,如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;
using System.Collections;
    
public class Control : MonoBehaviour {
    
        // Use this for initialization
        void Start () {
           
       }
           
        // Update is called once per frame
        void Update () {
           
       }
    
    public void PointClicked() {
        Debug.Log( "---> PointClicked");
    }
}

将脚本绑在VRCameras下,再设置Image的Event Type.

 
测试结果:

完成。



2、视选控制 
3D模型,主要就是射线+碰撞。主要代码如下,将该代码绑定到VRCameras下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using UnityEngine;
using System.Collections;
      
public class UIControl3D : MonoBehaviour {
    public Camera myCamera;
    private float time = 0;
      
    public MeshRenderer target_on;
    public MeshRenderer target_off;
    public ParticleSystem myExplosion;
      
    // Use this for initialization
    void Start () {
             
       }
             
        // Update is called once per frame
        void Update () {
        CheckTargeted();
       }
    
    
    void CheckTargeted()
    {
        // 分屏,宽度在1/2屏幕居中
        Ray ray = myCamera.ScreenPointToRay( new Vector3( Screen.width / 4, Screen.height / 2));
        RaycastHit hits;
        // 发出射线
        if ( Physics.Raycast(ray, out hits, 5000))
        {
            Debug.Log(hits.collider.name);
     
            if (hits.collider.name == "Cube")
            {
                time += 1 * Time.deltaTime;
     
                target_on.enabled = true;
                target_off.enabled = false;
     
                if (time >= 1.5f)
                {
                    this.myExplosion.Play();
                    time += Time.deltaTime;
                }
                if (time >= 2)
                {
                    time = 0;
                    this.myExplosion.Stop();
                }
            }
        }
        else
        // 重置场景
            time = 0;
            target_on.enabled = false;
            target_off.enabled = true;
        }
    }
}
最后效果如下:
 
 

OK,那么今天就讲到这里,欢迎大家一起加入交流讨论,咱们官方技术交流群是: 

AR/VR学院技术交流群 129340649

Unity中Oculus VR的UI凝视交互

Oculus VR中的UI凝视交互根据译文《VR中的UI凝视交互》进行的整理和补充,只有实现步骤。 原文链接: 《VR中的UI凝视交互》 http://gad.qq.com/article...
  • qq_21397217
  • qq_21397217
  • 2017年05月25日 11:34
  • 1747

StreamVR插件详解二:UI及手柄

本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.PHP?mod=viewthread&tid=1641&extra=page=1。 在...
  • Root915
  • Root915
  • 2017年03月23日 18:23
  • 1148

【VR】VR中的交互

VR中的交互 概述 在VR中我们经常需要激活用户正在看的对象,比如VRSamples中,我们内建了一个简单的可扩展的,轻量级用户交互系统框架.它包括了三个主要脚本::VREyeRaycaste...
  • hcud024
  • hcud024
  • 2016年04月27日 20:27
  • 1792

【翻译】 Unity3D VR 教程:4.VR中的用户界面

给VR设计用户界面的时候需要考虑很多传统屏幕设计场景中难以发现的问题。接下来我们会了解一下,作为VR开发者的挑战和机遇,然后讨论一下在这个新设备上,开发可用的界面的操作性。 UI分辨率和外观...
  • sherlockchang
  • sherlockchang
  • 2016年05月09日 22:11
  • 1825

教你如何开发VR游戏系列教程四:UI 设计

这篇帖子主要介绍怎么创建VR UI。  常见形式:  1、2D  NGUI、UGUI  2、3D  模型  由于后续NGUI可能停止更新以及与U3d后续版本不兼容问题,那么主要就以UGUI为例。NG...
  • ggtaas
  • ggtaas
  • 2015年11月19日 19:37
  • 2657

【unity3d】解决NGUI在VR·cardboard中UI分屏的问题

问题描述:在cardboard中做UI是一个很头疼的问题。因为cardboard组件会自动屏蔽UI,默认的UGUI系统不会显示,NGUI也是如此,GUI能显示,但不会分屏。而开发VR时,不可避免的要使...
  • lzh1590
  • lzh1590
  • 2017年03月16日 19:20
  • 1272

从零开始丨使用Unity3D进行VIVE VR游戏开发

使用Unity3D进行VR游戏的开发,首先需要具备的条件
  • caodongfang126
  • caodongfang126
  • 2017年01月06日 09:49
  • 5548

unity3d VR的多个Canvas下UI交互射线穿透问题

1.在VR里面,多个Canvas重叠的时可能会发现,射线触碰前面那个Canvas时,会响应到后面的Canvas,如下图:2.把多个Canvas下的Graphic Raycaster的Blocking ...
  • Rowley123456
  • Rowley123456
  • 2017年07月25日 16:39
  • 779

Unity使用UGUI进行VR游戏的界面开发

原文链接:http://gad.qq.com/article/detail/7181505本文首发腾讯GAD开发者平台,未经允许,不得转载我不知道有多少同学是跟我一样,在开发VR游戏中,是使用的面片或...
  • qq992817263
  • qq992817263
  • 2016年12月27日 11:42
  • 2535

Unity UI系统–可交互组件

Interaction Components 本节将介绍UI系统的可交互性组件,可以响应鼠标,触摸和键盘或其它控制器的操作 Selectable Base Class 所有的可交互组...
  • azurecell
  • azurecell
  • 2015年01月10日 21:23
  • 755
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:教你如何开发VR游戏系列教程五:UI 交互
举报原因:
原因补充:

(最多只允许输入30个字)