public void CalculateDirection() { float minDistance = Vector2.Distance(mousePosition, none); JoyDirection = StickDirection.NONE; if (Vector2.Distance(mousePosition, left) < minDistance) { minDistance = Vector2.Distance(mousePosition, left); JoyDirection = StickDirection.LEFT; } if (Vector2.Distance(mousePosition, right) < minDistance) { minDistance = Vector2.Distance(mousePosition, right); JoyDirection = StickDirection.RIGHT; } if (Vector2.Distance(mousePosition, top) < minDistance) { minDistance = Vector2.Distance(mousePosition, top); JoyDirection = StickDirection.UP; } if (Vector2.Distance(mousePosition, bottom) < minDistance) { minDistance = Vector2.Distance(mousePosition, bottom); JoyDirection = StickDirection.DOWN; } if (Vector2.Distance(mousePosition, topLeft) < minDistance) { minDistance = Vector2.Distance(mousePosition, topLeft); JoyDirection = StickDirection.UP_LEFT; } if (Vector2.Distance(mousePosition, topRight) < minDistance) { minDistance = Vector2.Distance(mousePosition, topRight); JoyDirection = StickDirection.UP_RIGHT; } if (Vector2.Distance(mousePosition, bottomLeft) < minDistance) { minDistance = Vector2.Distance(mousePosition, bottomLeft); JoyDirection = StickDirection.DOWN_LEFT; } if (Vector2.Distance(mousePosition, bottomRight) < minDistance) { minDistance = Vector2.Distance(mousePosition, bottomRight); JoyDirection = StickDirection.DOWN_RIGHT; } }
public void Update() { if (!Input.GetMouseButton(0)) { startFollowing = false; } mousePosition = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); if (Input.GetMouseButton(0) && joyStickRect.Contains(mousePosition) || startFollowing) { startFollowing = true; float joyX = Mathf.Clamp(mousePosition.x - joyStickRect.width / 2, touchPadRect.x, (touchPadRect.x + touchPadRect.width) - joyStickRect.width); float joyY = Mathf.Clamp(mousePosition.y - joyStickRect.height / 2, touchPadRect.y, (touchPadRect.y + touchPadRect.height) - joyStickRect.height); joyStickRect = new Rect(joyX, joyY, joyStickRect.width, joyStickRect.height); CalculateDirection(); } else { joyStickRect = initialPosition; JoyDirection = StickDirection.NONE; } }