Unity VRTK实现圆盘的上下左右键

Unity VRTK实现圆盘的上下左右键

在我们做VR项目的时候,避免不了使用手柄进行一些交互操作,这就要求我们要获取手柄的回调事件,然后进行自己的处理。当然我这里是使用的是HTC vive眼镜配套的手柄:
Unity VRTK实现圆盘的上下左右键_第1张图片
在这里,我们要使用圆盘。我们使用的时候也发现,其实整个圆盘都是可以按下去的,并没有区分上下左右,而且整个圆盘还有触摸的检测事件,通过发掘圆盘内部的回调事件,我们可以找到把圆盘变成上下左右这样操作的办法。通过打开VRTK_ControllerEvents组件,找到以下方法:
Unity VRTK实现圆盘的上下左右键_第2张图片
通过简单测试,发现圆盘其实是一个象限,以中心点为(0,0),水平轴为X轴,垂直轴为Y轴,并且获得以下角度范围:
Unity VRTK实现圆盘的上下左右键_第3张图片
所以,我们可以根据角度来获取按键进行操作,代码如下:

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);
    }

    // Update is called once per frame
    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("左方向键");
        }
    } }

在上面的脚本中,使用以下范围进行判定:
Unity VRTK实现圆盘的上下左右键_第4张图片
然后挂在一个物体上,赋予VRTK_ControllerEvents组件,运行游戏
Unity VRTK实现圆盘的上下左右键_第5张图片

你可能感兴趣的:(VR开发,Unity开发,VRTK)