Air-tap类似于鼠标点击,一般用于确认功能
Bloom则一般用来取消或回到主界面
1.1凝视功能实现:(Gaze)
UnityEngine.Camera.main.transform.position
获取主摄像机的位置
UnityEngine.Camera.main.transform.forward
获取主摄像机的方向
void Update ()
{
RaycastHit hitInfo;
if (Physics.Raycast(UnityEngine.Camera.main.transform.position,
UnityEngine.Camera.main.transform.forward,
out hitInfo, 20f,Physics.DefaultRaycastLayers))
{
Transform tran = hitInfo.transform;
//控制物体旋转
tran.Rotate(new Vector3(0, 1, 0));
}
}
1.2手势(Gesture)
1.创建Gesture Recognizer
GestureRecognizer recognizer=new GestureRecognizer();
2.指定需要捕捉的手势类型
recognizer.SetRecognizableGestures(GestureSetting.Tap);
3.捕捉到手势后的处理
recoginzer.TappedEvent += TapEventHandler;
4.开始捕捉手势
recoginzer.StartCapturingGesture();
5.结束手势捕捉
recoginzer.StopCapturingGesture();
Demo:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VR.WSA.Input;
public class Gesture : MonoBehaviour {
//定义一个手势识别器
GestureRecognizer recognizer;
// Use this for initialization
void Start ()
{
recognizer = new GestureRecognizer(); //初始化识别器
//设置识别器类型,这里识别单击和双击
recognizer.SetRecognizableGestures(GestureSettings.Tap | GestureSettings.DoubleTap);
//注册手势识别事件
recognizer.TappedEvent += TapEventHandler;
//开启手势捕捉功能
recognizer.StartCapturingGestures();
}
//手势识别事件
//InteractionSourceKind 为事件的来源,是一个枚举值,有以下四个值
//Other 其他的
//Hand 手
//Voice 语音
//Controller 控制器
//tapCount表示点击次数,如果tapCount=1代表单击,tapCount=2代表双击