HTC Vive手柄Pad获取角度
最近在看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; //这个原作者好像弄反了。
}
}