/// <summary> /// Очистить цели у себя и врагов /// </summary> public void ClearTarget() { target = null; meleeTarget = null; WarUnit warUnit = this as WarUnit; var allUnits = meleeUnits.Concat(rangeUnits); Unit[] enemies = new Unit[0]; if (warUnit != null) { WarTower warTower = warUnit.tower; var warriors = warTower.warriors; enemies = allUnits.Where(u => warriors.Contains(u.target) || warriors.Contains(u.meleeTarget)).ToArray(); } else { enemies = allUnits.Where(u => u.target == this || u.meleeTarget == this).ToArray(); } if (enemies.Length == 0) { return; } foreach (var enemy in enemies) { enemy.target = null; enemy.meleeTarget = null; } }
/// <summary> /// Действие с вышкой воинов /// </summary> /// <param name="warTower">Вышка воинов</param> void ActionWithWarTower(WarTower warTower) { MoveArea moveArea = warTower.moveArea; for (int i = 0; i < hits3D.Length; i++) { RaycastHit hit = hits3D[i]; Transform hitTransform = hit.transform; if (hitTransform == null) { continue; } MoveArea hitMoveArea = hitTransform.GetComponent <MoveArea>(); if (hitMoveArea == null) { continue; } if (hitMoveArea == moveArea) { Vector3 point = hit.point; warTower.SetPlacePoint(point); break; } } levelManager.SelectedObject = null; }
public void SellTower() { tower.buildPlace.gameObject.SetActive(true); tower.buildPlace.ShowHideMeshs(false); tower.ownTransform.gameObject.SetActive(false); WarTower warTower = tower as WarTower; if (warTower != null) { var warriors = warTower.warriors; foreach (var warrior in warriors) { warrior.isActive = false; warrior.ClearTarget(); } } int priceToReturn = tower.priceToReturn; levelManager.AddGold(priceToReturn); levelManager.SelectedObject = null; }