/// <summary> /// 方向キープレスイベント通知 /// </summary> /// <param name="key">方向キー</param> public void NotifyObserversPressDirectionKey(GameControllerConstant.DirectionKey key) { foreach (var observer in observers) { observer.PressDirectionKey(key); } }
/// <summary> /// 方向キーからUnityのKeyCodeに変換 /// </summary> /// <param name="key">対象の方向キー</param> /// <param name="key1">UnityEngineのKeyCode</param> /// <param name="key2">UnityEngineのKeyCode(複数のケースあり)</param> private void ConvertDirectionKeyToUnityKeyCode(GameControllerConstant.DirectionKey key, out KeyCode key1, out KeyCode key2) { key1 = KeyCode.None; key2 = KeyCode.None; switch (key) { case GameControllerConstant.DirectionKey.Up: key1 = KeyCode.UpArrow; break; case GameControllerConstant.DirectionKey.Down: key1 = KeyCode.DownArrow; break; case GameControllerConstant.DirectionKey.Right: key1 = KeyCode.RightArrow; break; case GameControllerConstant.DirectionKey.Left: key1 = KeyCode.LeftArrow; break; case GameControllerConstant.DirectionKey.RightUp: key1 = KeyCode.RightArrow; key2 = KeyCode.UpArrow; break; case GameControllerConstant.DirectionKey.RightDown: key1 = KeyCode.RightArrow; key2 = KeyCode.DownArrow; break; case GameControllerConstant.DirectionKey.LeftUp: key1 = KeyCode.LeftArrow; key2 = KeyCode.UpArrow; break; case GameControllerConstant.DirectionKey.LeftDown: key1 = KeyCode.LeftArrow; key2 = KeyCode.DownArrow; break; default: break; } }
/// <summary> /// 方向キーが押されたか /// </summary> /// <param name="key">対象の方向キー</param> /// <returns>対象の方向キーが押されている間trueが返される</returns> public bool IsPress(GameControllerConstant.DirectionKey key) { KeyCode keyCode1, keyCode2; ConvertDirectionKeyToUnityKeyCode(key, out keyCode1, out keyCode2); if (keyCode2 != KeyCode.None) { // 複数キーを使うケース if (UnityEngine.Input.GetKey(keyCode1) && UnityEngine.Input.GetKey(keyCode2)) { return(true); } return(false); } if (UnityEngine.Input.GetKey(keyCode1)) { // 単一キーを使うケース return(true); } return(false); }