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