HTC Vive手柄Pad获取角度

作者: 湛月 | 来源:发表于2016-07-15 17:54 被阅读387次

    最近在看htc,顺便做点积累。手柄上的按键比较明确,唯一的就是pad这个区域。这个可以通过计算获取方向,我们开发主要用来选择UI使用。

    using UnityEngine;

    using System.Collections;

    public class PadAction : MonoBehaviour {

    SteamVR_TrackedObject trackdeObject;

    void Awake() {

    //获取手柄上的这个组件

    trackdeObject = GetComponent();

    }

    // Use this for initialization

    void Start () {

    }

    void FixedUpdate()

    { //获取手柄输入

    var device = SteamVR_Controller.Input((int)trackdeObject.index);

    if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad)) //触摸到pad

    {

    //方法返回一个坐标 接触圆盘位置

    Vector2 pos = device.GetAxis();

    float angle= VectorAngle(new Vector2(1, 0), cc); //form设定为(1,0)表示以x轴正向为准。

    Debug.Log(angle);

    }

    }

    //方向圆盘最好配合这个使用 圆盘的.GetAxis()会检测返回一个二位向量,可用角度划分圆盘按键数量

    //这个函数输入两个二维向量会返回一个夹角 180 到 -180

    float VectorAngle(Vector2 from, Vector2 to)

    {

    float angle;

    Vector3 cross = Vector3.Cross(from, to);

    angle = Vector2.Angle(from, to);

    return cross.z > 0 ? angle : -angle; //这个原作者好像弄反了。

    }

    }

    文章参照http://www.cnblogs.com/czaoth/p/5610883.html

    相关文章

      网友评论

        本文标题:HTC Vive手柄Pad获取角度

        本文链接:https://www.haomeiwen.com/subject/eiyldttx.html