HoloLens开发:使用Navigation手势进行物体缩放

使用Navigation手势进行物体缩放

笔者开发版本为unity5.6.1f1,写教程时版本已经更新到了2018.2

初始化

首先需要部署好摄像头
HoloLens开发:使用Navigation手势进行物体缩放
然后我们要缩放的物体为一个Plane,并为其添加Collider(这样才能被手势捕捉到)
HoloLens开发:使用Navigation手势进行物体缩放
添加EventSystem,必须有这个才能进行交互
Cursor是为了展示目光位置以及触及的物体
场景中所有物体:
HoloLens开发:使用Navigation手势进行物体缩放
添加Manager脚本
Manager上脚本如图,这些脚本都可以在链接(选择unity版本为5.6.1)中获取到,当然如果我们只做旋转的话并不需要这么多脚本,只需要Hands和GestureManager就可以
HoloLens开发:使用Navigation手势进行物体缩放

脚本位置
HoloLens开发:使用Navigation手势进行物体缩放

Logo物体上的脚本
Navigation手势可以获取一直保持点击姿势时的手在X轴和Y轴上的偏移(值在-1到1之间),这里我们只使用X轴也就是手在水平方向上的偏移

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Academy.HoloToolkit.Unity;
using UnityEngine.UI;

public class TestRot : MonoBehaviour {

    // Use this for initialization
    [Tooltip("Rotation max speed controls amount of rotation.")]
    public float RotationSensitivity = 10.0f;

  //  public Text text;

    private float rotationFactorX;
    private float rotationFactorY;
    private float rotationFactorZ;


    Vector3 naivescale;
    // Use this for initialization  
    void Start()
    {
        naivescale = gameObject.transform.localScale;
    }

    // Update is called once per frame  
    void Update()
    {
        PerformRotation();
    }

    private void PerformRotation()
    {
        //当处于Navigating Gesture时且当前物体为被手势识别追踪的物体时进行旋转  
        if (GestureManager.Instance.IsNavigating && HandsManager.Instance.FocusedGameObject == gameObject)
        {
            //计算旋转角度  
            rotationFactorX = GestureManager.Instance.NavigationPosition.x * RotationSensitivity;
         //   text.text = GestureManager.Instance.NavigationPosition.x.ToString();
            //绕着y轴进行旋转  
            //  transform.Rotate(new Vector3(0, -1 * rotationFactorX, 0));

            float f = Mathf.Abs(GestureManager.Instance.NavigationPosition.x);
            //限定最低
            if (f < 0.3)
                f = 0.3f;     
            transform.localScale = f * 2 * naivescale;

        }
    }
}

HoloLens开发:使用Navigation手势进行物体缩放
这样我们即可对Logo物体通过手势的横向位移进行旋转

参考
Microsoft HoloLens: Course 211 - Gesture
Hololens入门之手势识别