private void Update() { // ボタン m_circle?.SetActive(GamePad.GetButton(m_gpId, GPButton.Circle)); m_cross?.SetActive(GamePad.GetButton(m_gpId, GPButton.Cross)); m_triangle?.SetActive(GamePad.GetButton(m_gpId, GPButton.Triangle)); m_square?.SetActive(GamePad.GetButton(m_gpId, GPButton.Square)); m_l1?.SetActive(GamePad.GetButton(m_gpId, GPButton.LeftShoulder1)); m_r1?.SetActive(GamePad.GetButton(m_gpId, GPButton.RightShoulder1)); m_l2?.SetActive(GamePad.GetButton(m_gpId, GPButton.LeftShoulder2)); m_r2?.SetActive(GamePad.GetButton(m_gpId, GPButton.RightShoulder2)); m_l3?.SetActive(GamePad.GetButton(m_gpId, GPButton.LeftStick)); m_r3?.SetActive(GamePad.GetButton(m_gpId, GPButton.RightStick)); { // 十字キー Vector2 dpad = GamePad.GetArrowDPadVec2(m_gpId); m_dLeft?.SetActive(dpad.x <= -1.0f); m_dRight?.SetActive(dpad.x >= 1.0f); m_dUp?.SetActive(dpad.y >= 1.0f); m_dDown?.SetActive(dpad.y <= -1.0f); } { // アナログスティック float factor = 12.0f; m_stickL.localPosition = GPImpl.GetAxis(GPAxis.LeftStick, m_gpId.ToRawID()) .AddZ(0.0f) * factor; m_stickR.localPosition = GPImpl.GetAxis(GPAxis.RightStick, m_gpId.ToRawID()) .AddZ(0.0f) * factor; } }
/// <summary> /// 方向入力(左)の入力をVector3で取得 /// - X:Horizontal / Y:0 / Z:Vertical /// </summary> public static Vector3 GetLeftAxisXZ(GamePadID gpID) => GetLeftAxis(gpID.ToRawID()).AddY(0f);
/// <summary> 方向入力(左)の入力をVector2で取得 </summary> public static Vector2 GetLeftAxis(GamePadID gpID) => GetLeftAxis(gpID.ToRawID());
/// <summary> 十字ボタンの指定方向が押されているか </summary> public static bool GetArrowDPad(GamePadID gpID, GPArrow arrow) => GetArrowDPad(gpID.ToRawID(), arrow);
/// <summary> 十字ボタンの入力をVector2で取得 </summary> public static Vector2 GetArrowDPadVec2(GamePadID gpID) => GetArrowDPadVec2(gpID.ToRawID());
/// <summary> ボタンが押されている間:true </summary> public static bool GetButton(GamePadID gpID, GPButton button) => GetButton(gpID.ToRawID(), button);