public static bool GetArrowKeyDown(Arrow arrow, GPRawID controlIndex) { bool isArrow = GetArrowKey(arrow, controlIndex); bool returnValue; try { if (previousIsArrow[(int)controlIndex, (int)arrow] == false) { //前フレームで押されていない時 returnValue = isArrow; } else { //前フレームで押されていた時 returnValue = false; } } catch (IndexOutOfRangeException ex) { Debug.Log(ex); Debug.Log("Array Length:" + previousIsArrow.Length); Debug.Log("control Index:" + controlIndex); return(false); } //前フレームの情報を更新 previousIsArrow[(int)controlIndex, (int)arrow] = GetArrowKey(arrow, controlIndex); return(returnValue); }
public static bool GetArrowKey(Arrow arrow, GPRawID controlIndex) { Vector2 axis = GetAxis(Axis.Any, controlIndex); switch (arrow) { case Arrow.Left: return(axis.x <= -1.0f); case Arrow.Right: return(axis.x >= 1.0f); case Arrow.Up: return(axis.y >= 1.0f); case Arrow.Down: return(axis.y <= -1.0f); case Arrow.Any: return(axis.x <= -1.0f || axis.x >= 1.0f || axis.y >= 1.0f || axis.y <= -1.0f); default: return(false); } }