summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Input/InputManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Input/InputManager.cs')
-rw-r--r--Assets/Scripts/Input/InputManager.cs65
1 files changed, 56 insertions, 9 deletions
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<InputManager>
}
}
+ 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<Command>();
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<InputManager>
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);
}
}