public void SetTarget(GameObject tar) { target = tar; if (target != null) { UnitStatSystem tarStat = target.GetComponent <UnitStatSystem>(); if (tarStat != null) { foreach (GameObject uni in unitList) { UnitCombat com = uni.GetComponent <UnitCombat>(); com.SetTarget(tarStat); } } UnitGroupSystem tarGro = target.GetComponent <UnitGroupSystem>(); if (tarGro != null) { foreach (GameObject uni in unitList) { UnitCombat com = uni.GetComponent <UnitCombat>(); UnitStatSystem tarLitStat = tarGro.GetUnitList()[Random.Range(0, tarGro.GetUnitList().Count)].GetComponent <UnitStatSystem>(); com.SetTarget(tarLitStat); } } } }
// Update is called once per frame void Update() { if (isSelected) { selectorCircle.SetActive(true); } else { selectorCircle.SetActive(false); } for (int i = 0; i < unitList.Count; i++) { GameObject uniChe = null; uniChe = unitList[i]; if (uniChe) { UnitStatSystem uniSta = uniChe.GetComponent <UnitStatSystem>(); uniSta.SetSelected(isSelected); } } if (target != null) { Vector3 targetPos = new Vector3(target.transform.position.x, 0, target.transform.position.z); Vector3 groPos = new Vector3(transform.position.x, 0, transform.position.z); UnitMove mover = GetComponent <UnitMove>(); if (Vector3.Distance(targetPos, groPos) >= atkRange) { if (!mover.GetIsColEvd()) { mover.OrderMove(targetPos); } } else { if (!mover.GetIsColEvd()) { mover.OrderMove(Vector3.one); } } } else { for (int i = 0; i < unitList.Count; i++) { GameObject uniObj = null; uniObj = unitList[i]; GameObject posObj = null; posObj = pointList[i]; if (uniObj != null && posObj != null) { Vector3 uniPos = new Vector3(uniObj.transform.position.x, 0, uniObj.transform.position.z); Vector3 posPos = new Vector3(posObj.transform.position.x, 0, posObj.transform.position.z); UnitMove uni = uniObj.GetComponent <UnitMove>(); UnitCombat com = uniObj.GetComponent <UnitCombat>(); UnitStatSystem star = uniObj.GetComponent <UnitStatSystem>(); if (star.GetAlive()) { star.SetSelected(isSelected); if (!com.HaveTarget()) { if (Vector3.Distance(uniPos, posPos) > 1) { if (!uni.GetIsColEvd()) { uni.OrderMove(posObj.transform.position); com.SetAutoATK(false); } } else { if (!uni.GetIsColEvd()) { uni.OrderMove(Vector3.one); com.SetAutoATK(true); } } } else { Vector3 groPos = new Vector3(transform.position.x, 0, transform.position.z); if (Vector3.Distance(groPos, uniPos) >= maxFollow) { com.SetTarget(null); com.SetAutoATK(false); } } } } else { unitList.Remove(uniObj); pointList.Remove(posObj); Destroy(posObj.gameObject); } } } if (unitList.Count <= 0) { Destroy(this.gameObject); } }