// Update is called once per frame void Update() { update_health_UI(); if (Input.GetMouseButtonDown(0)) { selectionAreaTransform.gameObject.SetActive(true); startMousePosition = Input.mousePosition; } if (Input.GetMouseButton(0)) { Vector3 s = Input.mousePosition; Vector3 lowerleft = new Vector3(Mathf.Min(startMousePosition.x, s.x), Mathf.Min(startMousePosition.y, s.y)); Vector3 upperRight = new Vector3(Mathf.Max(startMousePosition.x, s.x), Mathf.Max(startMousePosition.y, s.y)); selectionAreaTransform.position = lowerleft; selectionAreaTransform.sizeDelta = new Vector2(upperRight.x - lowerleft.x, upperRight.y - lowerleft.y); //selectionAreaTransform.localScale = upperRight - lowerleft; } if (Input.GetMouseButtonUp(0)) { Vector3 s = Input.mousePosition; selectionAreaTransform.gameObject.SetActive(false); Vector2 lowerleft = new Vector3(Mathf.Min(startMousePosition.x, s.x), Mathf.Min(startMousePosition.y, s.y)); Vector2 upperRight = new Vector3(Mathf.Max(startMousePosition.x, s.x), Mathf.Max(startMousePosition.y, s.y)); foreach (UnityRTS u in selectedUnities) { u.SetSelectedVisibility(false); } selectedUnities.Clear(); foreach (UnityRTS unit in player.playersUnities) { Vector3 screenPos = Camera.main.WorldToScreenPoint(unit.transform.position); if (screenPos.x > lowerleft.x && screenPos.x < upperRight.x && screenPos.y > lowerleft.y && screenPos.y < upperRight.y) { selectedUnities.Add(unit); unit.SetSelectedVisibility(true); } } update_stats(); if (startMousePosition == s) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { UnityRTS u = hit.transform.gameObject.GetComponent <UnityRTS>(); bool exist = false; foreach (UnityRTS unit in player.playersUnities) { if (unit == u) { exist = true; } } if (u != null && exist) { foreach (UnityRTS unit in selectedUnities) { unit.SetSelectedVisibility(false); } selectedUnities.Clear(); selectedUnities.Add(u); u.SetSelectedVisibility(true); update_stats(); } } } //Debug.Log(selectedUnities.Count); } if (Input.GetMouseButtonDown(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (selectedUnities.Count > 0) { if (Physics.Raycast(ray, out hit)) { UnityRTS u = hit.transform.gameObject.GetComponent <UnityRTS>(); if (u != null) { foreach (UnityRTS unit in selectedUnities) { unit.setCurrentTarget(u.gameObject.transform); } } else { Vector3 path = selectedUnities[0].calculatePath(hit.point); foreach (UnityRTS un in selectedUnities) { un.moveToPosiotion(path); un.setCurrentTarget(null); } } } } } }