From 3e8ab8f4b98086e9a1a4b2fd1221e86e9abceea4 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 18 Oct 2020 08:22:25 +0800 Subject: +gamepad +superkick combo --- Assets/Scripts/Input/InputManager.cs | 65 +++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 9 deletions(-) (limited to 'Assets/Scripts/Input') diff --git a/Assets/Scripts/Input/InputManager.cs b/Assets/Scripts/Input/InputManager.cs index f24a3efa..6bce55c6 100644 --- a/Assets/Scripts/Input/InputManager.cs +++ b/Assets/Scripts/Input/InputManager.cs @@ -24,32 +24,63 @@ public class InputManager : Singleton } } + private enum Axis { Up, Down, Left, Right}; + + private bool[] m_Axis = new bool[4] { false, false, false, false}; + public void Init() { m_CommandRecord = new List(); m_CurrentCommand = new Command(GamepadButton.Blank, 0); } + private bool GetAxis(Axis axis) + { + return false; + bool axisRaw = false; + switch (axis) + { + case Axis.Left: axisRaw = Input.GetAxisRaw("Horizontal") == -1; break; + case Axis.Right: axisRaw = Input.GetAxisRaw("Horizontal") == 1; break; + case Axis.Down: axisRaw = Input.GetAxisRaw("Vertical") == -1; break; + case Axis.Up: axisRaw = Input.GetAxisRaw("Vertical") == 1; break; + } + if (axisRaw) + { + if(!m_Axis[(int)axis]) + { + m_Axis[(int)axis] = true; + return true; + } + return false; + } + else + { + m_Axis[(int)axis] = false; + return false; + } + } + public void Update() { GamepadButton cmd = GamepadButton.Blank; // 移动 - if (Input.GetKeyDown("w")) + if (Input.GetKeyDown("w") || GetAxis(Axis.Up)) cmd = GamepadButton.Up; - if (Input.GetKeyDown("s")) + if (Input.GetKeyDown("s") || GetAxis(Axis.Down)) cmd = GamepadButton.Down; - if (Input.GetKeyDown("a")) + if (Input.GetKeyDown("a") || GetAxis(Axis.Left)) cmd = GamepadButton.Left; - if (Input.GetKeyDown("d")) + if (Input.GetKeyDown("d") || GetAxis(Axis.Right)) cmd = GamepadButton.Right; // 动作 - if (Input.GetKeyDown("j")) + if (Input.GetKeyDown("j") || Input.GetKeyDown(KeyCode.Joystick1Button2)) cmd = GamepadButton.Circle; - if (Input.GetKeyDown("k")) + if (Input.GetKeyDown("k") || Input.GetKeyDown(KeyCode.Joystick1Button0)) cmd = GamepadButton.Triangle; - if (Input.GetKeyDown("l")) + if (Input.GetKeyDown("l") || Input.GetKeyDown(KeyCode.Joystick1Button1)) cmd = GamepadButton.Square; - if(Input.GetKeyDown("u")) + if (Input.GetKeyDown("u") || Input.GetKeyDown(KeyCode.Joystick1Button3)) cmd = GamepadButton.Cross; if(cmd != GamepadButton.Blank) @@ -109,9 +140,25 @@ public class InputManager : Singleton return ""; } + bool GetGamepadButtonState(GamepadButton button) + { + switch (button) + { + case GamepadButton.Up: return m_Axis[(int)Axis.Up]; + case GamepadButton.Down: return m_Axis[(int)Axis.Down]; + case GamepadButton.Left: return m_Axis[(int)Axis.Left]; + case GamepadButton.Right: return m_Axis[(int)Axis.Right]; + case GamepadButton.Circle: return Input.GetKey(KeyCode.Joystick1Button2); + case GamepadButton.Triangle: return Input.GetKey(KeyCode.Joystick1Button0); + case GamepadButton.Square: return Input.GetKey(KeyCode.Joystick1Button1); + case GamepadButton.Cross: return Input.GetKey(KeyCode.Joystick1Button3); + } + return false; + } + public bool IsButtonHold(GamepadButton button) { - return Input.GetKey(GetGamepadButtonKey(button)); + return Input.GetKey(GetGamepadButtonKey(button)) || GetGamepadButtonState(button); } } -- cgit v1.1-26-g67d0