public bool CheckDirection(JoyStickDirection eDirection) { switch (eDirection) { case JoyStickDirection.UP: return(Direction.x == 0 && Direction.y == 1); case JoyStickDirection.DOWN: return(Direction.x == 0 && Direction.y == -1); case JoyStickDirection.LEFT: return(Direction.x == -1 && Direction.y == 0); case JoyStickDirection.RIGHT: return(Direction.x == 1 && Direction.y == 0); case JoyStickDirection.UP_LEFT: return(Direction.x == -1 && Direction.y == 1); case JoyStickDirection.UP_RIGHT: return(Direction.x == 1 && Direction.y == 1); case JoyStickDirection.DOWN_LEFT: return(Direction.x == -1 && Direction.y == -1); case JoyStickDirection.DOWN_RIGHT: return(Direction.x == 1 && Direction.y == -1); default: return(false); } }
public void OnJoyStickThumTouchMove(Vector2 vec) { lastJoyStickDir = curJoyStickDir; float _angle = Vector2.Angle(vec, Vector2.up); if (vec.x >= 0 && _angle <= 135) { curJoyStickDir = JoyStickDirection.Forward; } else if (vec.x < 0 && _angle <= 135) { curJoyStickDir = JoyStickDirection.Backward; } else if (_angle > 135) { curJoyStickDir = JoyStickDirection.Down; } if (OnJoyStickTouchMove != null) { OnJoyStickTouchMove.Invoke(curJoyStickDir); } if (lastJoyStickDir != curJoyStickDir) { switch (curJoyStickDir) { case JoyStickDirection.Forward: arrow.localRotation = Quaternion.Euler(new Vector3(0, 0, -90)); break; case JoyStickDirection.Backward: arrow.localRotation = Quaternion.Euler(new Vector3(0, 0, 90)); break; case JoyStickDirection.Down: arrow.localRotation = Quaternion.Euler(new Vector3(0, 0, 180)); break; } if (!arrow.gameObject.activeSelf) { arrow.gameObject.SetActive(true); } if (OnJoyStickTouchChangeDir != null) { lastJoyStickDir = curJoyStickDir; OnJoyStickTouchChangeDir.Invoke(curJoyStickDir); } } }
// Use this for initialization private void Awake() { joyStickThum = transform.Find("JoyStick/Thum").GetComponent <JoyStickThum>(); arrow = transform.Find("JoyStick/Arrow"); joyStickTouchJudge = GetComponent <JoyStickTouchJudge>(); curJoyStickDir = JoyStickDirection.None; lastJoyStickDir = JoyStickDirection.None; joyStickThum = GetComponentInChildren <JoyStickThum>(); joyStickThum.JoyStickMaxRadius = joyStickMaxRadius; joyStickThum.JoyStickMinRadius = joyStickMinRadius; joyStickThum.ThumOnTouchColor = onTouchTumbColor; joyStickTouchJudge.JoyStickType = joyStickType; }
public void OnJoyStickThumTouchEnd() { if (arrow.gameObject.activeSelf) { arrow.gameObject.SetActive(false); } if (OnJoyStickTouchEnd != null) { OnJoyStickTouchEnd.Invoke(); } curJoyStickDir = JoyStickDirection.None; if (curJoyStickDir != lastJoyStickDir) { if (OnJoyStickTouchChangeDir != null) { lastJoyStickDir = curJoyStickDir; OnJoyStickTouchChangeDir.Invoke(curJoyStickDir); } } }
private void TestJoyStick(JoyStickDirection joyStickDir) { //摇杆返回的方向: None = 摇杆抬起, Forward = 方向右, Backward = 方向左, Down = 方向下; dirText.text = joyStickDir.ToString(); //Debug.Log("joyStickDir: " + joyStickDir); }