예제 #1
0
    // 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);
        }
    }
예제 #2
0
    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();
        }
    }