示例#1
0
    /// <summary>
    /// 按住
    /// </summary>
    /// <param name="inputSource"> 輸入源 </param>
    /// <param name="_button"    > 哪個鍵 </param>
    /// <returns></returns>
    public static bool GetPress(SteamVR_Input_Sources inputSource, EM_ControllerButton _button)
    {
        switch (_button)
        {
        case EM_ControllerButton.Pad:
            if (SteamVR_Input._default.inActions.Teleport.GetState(inputSource))
            {
                return(true);
            }
            break;

        case EM_ControllerButton.Grip:
            if (SteamVR_Input._default.inActions.GrabGrip.GetState(inputSource))
            {
                return(true);
            }
            break;

        case EM_ControllerButton.Trigger:
            if (SteamVR_Input._default.inActions.GrabPinch.GetState(inputSource))
            {
                return(true);
            }
            break;


        case EM_ControllerButton.PadUp:
            if (SteamVR_Input._default.inActions.Teleport.GetState(inputSource))
            {
                return(CheckPadPos(inputSource, _button));
            }
            break;

        case EM_ControllerButton.PadDown:
            if (SteamVR_Input._default.inActions.Teleport.GetState(inputSource))
            {
                return(CheckPadPos(inputSource, _button));
            }
            break;

        case EM_ControllerButton.PadLeft:
            if (SteamVR_Input._default.inActions.Teleport.GetState(inputSource))
            {
                return(CheckPadPos(inputSource, _button));
            }
            break;

        case EM_ControllerButton.PadRight:
            if (SteamVR_Input._default.inActions.Teleport.GetState(inputSource))
            {
                return(CheckPadPos(inputSource, _button));
            }
            break;
        }

        return(false);
    }
示例#2
0
    /// <summary>
    /// 確認圓盤鍵觸碰的位置  (注意:使用此功能需要先找個物件掛上 SteamVR_ActivateActionSetOnLoad.cs 激活 platformer動作集,因為使用到了 GetPadAxis的部分)
    /// </summary>
    /// <param name="tmp"> 手把圓盤按下的位置結果 </param>
    private static bool CheckPadPos(SteamVR_Input_Sources inputSource, EM_ControllerButton _button)
    {
        float angle = VectorAngle(new Vector2(1, 0), GetPadAxis(inputSource));

        switch (_button)
        {
        case EM_ControllerButton.PadUp:
            if (angle < -45 && angle > -135)
            {
                return(true);
            }
            break;

        case EM_ControllerButton.PadDown:
            if (angle > 45 && angle < 135)
            {
                return(true);
            }
            break;

        case EM_ControllerButton.PadLeft:
            if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180))
            {
                return(true);
            }
            break;

        case EM_ControllerButton.PadRight:
            if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0))
            {
                return(true);
            }
            break;
        }
        return(false);
    }