一起来玩VR\ARUnity技术VR/AR分享unity3D技术分享

HTC Vive手柄Pad获取角度

2016-07-15  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读