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

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 23:09   145   0

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

    // 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("左方向键");
        }
    } }

在上面的脚本中,使用以下范围进行判定:
这里写图片描述
然后挂在一个物体上,赋予VRTK_ControllerEvents组件,运行游戏
这里写图片描述

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP