HTC VIVE Steam Plugins2.2版本 获取手柄输入

1.将 SteamVR 这两个预设体拖到场景,删除原有MainCamera 

HTC VIVE Steam Plugins2.2版本 获取手柄输入_第1张图片

第一种方式: 新建个脚本挂载到场景即可

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;

public class ViveInput : MonoBehaviour {
    public SteamVR_Action_Single m_GrapPowerAction;  // Grap 按下程度
    public SteamVR_Action_Vector2 m_TeleportMoveAction; // 圆盘触摸事件
    public SteamVR_Action_Boolean m_GrapPinchAction; // Grap 按下事件                                                    // Use this for initialization


    // Update is called once per frame
    void Update () {
        // 一个手柄 SteamVR_Input_Sources.RightHand
        if (m_GrapPinchAction.GetStateDown(SteamVR_Input_Sources.Any))
        {
            Debug.Log("grap");
        }
        // Teleport 圆盘触摸坐标数据获取
        Vector2 TeleportPos = m_TeleportMoveAction.GetAxis(SteamVR_Input_Sources.Any);
        Debug.Log("TeleportPos" + TeleportPos);
        if (TeleportPos != Vector2.zero)
        {
            // Debug.Log("TeleportPos" + TeleportPos);
        }

        // Grap 按下程度
        float m_GrapPower = m_GrapPowerAction.GetAxis(SteamVR_Input_Sources.Any);
        Debug.Log(m_GrapPower);
    }
}

第二种方式如下:

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;

public class ViveControllerInput : MonoBehaviour
{
    public SteamVR_Action_Boolean m_TeleportAction; // 圆盘按下事件
    public SteamVR_Action_Boolean m_GrapPinchAction; // Grap 按下事件
    public SteamVR_Action_Single m_GrapPowerAction;  // Grap 按下程度
    public SteamVR_Action_Vector2 m_TeleportMoveAction; // 圆盘触摸事件
    public SteamVR_Behaviour_Pose[] m_pose; // 获取手柄上的 SteamVR_Behaviour_Pose 组件
    public 
    void Update()
    {
       
        for (int i = 0; i < m_pose.Length; i++)
        {
            if (m_TeleportAction.GetStateDown(m_pose[i].inputSource)|| m_GrapPinchAction.GetStateDown(m_pose[i].inputSource))
            {
                Debug.Log("任意一个手柄的Teleport圆盘按下 或者是  grap键 按下");
            }
        }
        
        // Teleport 圆盘触摸坐标数据获取
        Vector2 TeleportPos = m_TeleportMoveAction.GetAxis(SteamVR_Input_Sources.Any);
        Debug.Log("TeleportPos" + TeleportPos);
        if (TeleportPos != Vector2.zero)
        {
            // Debug.Log("TeleportPos" + TeleportPos);
        }

        // Grap 按下程度
        float m_GrapPower = m_GrapPowerAction.GetAxis(SteamVR_Input_Sources.Any);
        Debug.Log(m_GrapPower);
    }
}

 

3.脚本面板设置如下:

HTC VIVE Steam Plugins2.2版本 获取手柄输入_第2张图片

效果如下:

你可能感兴趣的:(VR)