// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { selectionAreaTransform.gameObject.SetActive(true); startPoistion = UtilsClass.GetMouseWorldPosition(); } if (Input.GetMouseButton(0)) { var mouseWorldPosition = UtilsClass.GetMouseWorldPosition(); var lowerLeft = new Vector3(Mathf.Min(startPoistion.x, mouseWorldPosition.x), Mathf.Min(startPoistion.y, mouseWorldPosition.y)); var upperRight = new Vector3(Mathf.Max(startPoistion.x, mouseWorldPosition.x), Mathf.Max(startPoistion.y, mouseWorldPosition.y)); selectionAreaTransform.position = lowerLeft; selectionAreaTransform.localScale = upperRight - lowerLeft; } if (Input.GetMouseButtonUp(0)) { selectionAreaTransform.gameObject.SetActive(false); Collider2D[] collider2DArray = Physics2D.OverlapAreaAll(startPoistion, UtilsClass.GetMouseWorldPosition()); Debug.Log("#####"); foreach (UnitRTS unitRts in SelectedUnitRTSList) { unitRts.SetSelectedVisible(false); } SelectedUnitRTSList.Clear(); foreach (Collider2D collider2D1 in collider2DArray) { UnitRTS unitRts = collider2D1.GetComponent <UnitRTS>(); if (unitRts != null) { unitRts.SetSelectedVisible(true); SelectedUnitRTSList.Add(unitRts); } } Debug.Log(SelectedUnitRTSList.Count); } }
private void Update() { if (Input.GetMouseButtonDown(0)) { // Left Mouse Button Pressed selectionAreaTransform.gameObject.SetActive(true); startPosition = UtilsClass.GetMouseWorldPosition(); } if (Input.GetMouseButton(0)) { // Left Mouse Button Held Down Vector3 currentMousePosition = UtilsClass.GetMouseWorldPosition(); Vector3 lowerLeft = new Vector3( Mathf.Min(startPosition.x, currentMousePosition.x), Mathf.Min(startPosition.y, currentMousePosition.y) ); Vector3 upperRight = new Vector3( Mathf.Max(startPosition.x, currentMousePosition.x), Mathf.Max(startPosition.y, currentMousePosition.y) ); selectionAreaTransform.position = lowerLeft; selectionAreaTransform.localScale = upperRight - lowerLeft; } if (Input.GetMouseButtonUp(0)) { // Left Mouse Button Released selectionAreaTransform.gameObject.SetActive(false); Collider2D[] collider2DArray = Physics2D.OverlapAreaAll(startPosition, UtilsClass.GetMouseWorldPosition()); // Deselect all Units foreach (UnitRTS unitRTS in selectedUnitRTSList) { unitRTS.SetSelectedVisible(false); } selectedUnitRTSList.Clear(); // Select Units within Selection Area foreach (Collider2D collider2D in collider2DArray) { UnitRTS unitRTS = collider2D.GetComponent <UnitRTS>(); if (unitRTS != null) { unitRTS.SetSelectedVisible(true); selectedUnitRTSList.Add(unitRTS); } } if (selectedUnitRTSList.Count == 0) { CursorManager.Instance.SetActiveCursorType(CursorManager.CursorType.Arrow); } else { CursorManager.Instance.SetActiveCursorType(CursorManager.CursorType.Move); } } if (Input.GetMouseButtonDown(1)) { // Right Mouse Button Pressed HandleRightClick(); } }