Unity VRTK实现圆盘的上下左右键
在我们做VR项目的时候,避免不了使用手柄进行一些交互操作,这就要求我们要获取手柄的回调事件,然后进行自己的处理。当然我这里是使用的是HTC vive眼镜配套的手柄:
在这里,我们要使用圆盘。我们使用的时候也发现,其实整个圆盘都是可以按下去的,并没有区分上下左右,而且整个圆盘还有触摸的检测事件,通过发掘圆盘内部的回调事件,我们可以找到把圆盘变成上下左右这样操作的办法。通过打开VRTK_ControllerEvents组件,找到以下方法:
通过简单测试,发现圆盘其实是一个象限,以中心点为(0,0),水平轴为X轴,垂直轴为Y轴,并且获得以下角度范围:
所以,我们可以根据角度来获取按键进行操作,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using VRTK;
public class Test : MonoBehaviour {
public VRTK_ControllerEvents vRTK_ControllerEvents;
void Start() {
vRTK_ControllerEvents.TouchpadPressed += new ControllerInteractionEventHandler(OnTouchPadPressed);
}
void Update() {
}
private void OnTouchPadPressed(object sender, ControllerInteractionEventArgs e)
{
if (e.touchpadAngle <= 45 || e.touchpadAngle >= 315)
{
print("上方向键");
}
else if (e.touchpadAngle > 45 && e.touchpadAngle <= 135)
{
print("右方向键");
}
else if (e.touchpadAngle > 135 && e.touchpadAngle <= 225)
{
print("下方向键");
}
else if (e.touchpadAngle > 225 && e.touchpadAngle < 315)
{
print("左方向键");
}
} }
在上面的脚本中,使用以下范围进行判定:
然后挂在一个物体上,赋予VRTK_ControllerEvents组件,运行游戏
 |